go에서는 타입에 대해 함수를 정의할 수 있는데, 이를 receiver func 라고 부른다
package main
import "fmt"
type Student struct {
Name string
Age int
}
type Class []Student
**//receiver func**
**func (c *Class) PrintStudentName() {
for _, student := range c {
fmt.Println(student.Name)
}
}**
//실제 사용
func main(){
studentList := Class{
{Name: "aaa", Age: 11},
{Name: "ada", Age: 12},
{Name: "awa", Age: 11},
}
**studentList.PrintStudentName()**
}
함수는 한 가지 기능만 해야 한다. 반드시!
함수에 인수를 전달할 때, boolean 값을 전달하는 것은 최후의 수단으로 두자.
함수가 한번에 여러가지를 처리하는 것을 의미하므로 앞서말한 것을 위배하기 떄문이다.
인수가 2-3개 필요하다면, 일부를 독자적 클래스 변수로 선언할 가능성은 없는지 생각하자.(이건 무슨말인가ㅠ)
⇒ 필요한 기능을 최대한 짧은 문장으로 쓰고, 함수 이름으로 만들자.
⇒ 과한 추상화도 자제하자
⇒ 주석을 붙여서 코드 설명하는 것보다 코드의 함수와 변수를 명확하게쓰자.