더북(TheBook)

인터페이스

Go의 인터페이스는 메서드의 묶음이다. 인터페이스에 정의된 메서드와 서명이 같은 메서드가 정의된 타입은 인터페이스로 사용할 수 있다.

type shaper interface {
    area() float64
}
 
func describe(s shaper) {
    fmt.Println("area :", s.area())
}
 
func main() {
    r := rect{3, 4}
    describe(r)
}

shaper 인터페이스에 area() float64 형태로 메서드를 정의했다. main 함수에서는 앞에서 정의한 rect 타입을 생성하고 이를 describe 함수의 매개변수로 전달했다.

shaper 인터페이스와 rect 타입 사이에는 아무런 연결 고리가 없다. 하지만 rect 타입이 shaper 인터페이스에 정의된 메서드(area() float64)와 형태가 같은 메서드를 가진 것만으로도 rect 타입을 shaper 인터페이스로 사용할 수 있다.

인터페이스에 관한 상세한 내용은 4.4절에서 다룬다.

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