더북(TheBook)

리시버 변수 생략

메서드 내부에서 리시버 변수를 사용하지 않을 때도 있다. 다음 예제를 보자.

type rect struct {
    width  float64
    height float64
}
 
func (rect) new() rect {
    return rect{}
}
 
func main() {
    r := rect{}.new()
    fmt.Println(r)
}

rect 타입에 정의된 new() 메서드처럼 메서드 내부에서 리시버 변수를 사용하지 않는다면 메서드를 정의할 때 리시버 변수를 생략할 수 있다. 리시버 변수가 생략된 메서드를 호출할 때는 rect{}.new()처럼 해당 타입 값을 생성하면서 바로 메서드를 호출하면 된다(구조체 값을 생성하는 방법은 4.3절에서 다룬다).

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.