[go] Go 언어의 인터페이스

Go 언어는 인터페이스(interface)라는 강력한 기능을 제공하여 유연하고 모듈화된 코드를 작성할 수 있게 합니다. 인터페이스메소드 집합을 나타내며, Go에서는 어떤 객체가 특정 인터페이스를 따르는지 판별하기 위해 명시적인 선언이 필요하지 않습니다.

인터페이스의 정의

type Shape interface {
    Area() float64
    Perimeter() float64
}

위 코드에서 Shape은 인터페이스를 나타내며, AreaPerimeter 메소드로 구성되어 있습니다.

인터페이스 구현

type Circle struct {
    radius float64
}

func (c Circle) Area() float64 {
    return math.Pi * c.radius * c.radius
}

func (c Circle) Perimeter() float64 {
    return 2 * math.Pi * c.radius
}

Circle 구조체가 Shape 인터페이스를 구현하고 있음을 볼 수 있습니다.

인터페이스 사용

func printShapeInfo(s Shape) {
    fmt.Println("Area:", s.Area())
    fmt.Println("Perimeter:", s.Perimeter())
}

위의 printShapeInfo 함수는 Shape 인터페이스를 따르는 객체를 인자로 받아 해당 객체의 정보를 출력합니다.

Go 언어의 인터페이스는 코드의 재사용성과 유지보수를 용이하게 만들어 주며, 객체 지향적인 설계 및 프로그래밍을 할 때 매우 유용하게 활용될 수 있습니다.

Go 언어 공식 문서에서 더 많은 정보를 확인할 수 있습니다.