Go 언어에서는 인터페이스 데이터 타입은 다양한 데이터 타입을 담을 수 있는 유연한 방법을 제공합니다. 인터페이스는 특정 메서드 집합을 구현하는 값을 나타내며, 해당 메서드들을 정적으로 호출할 수 있는 기능을 제공합니다.
인터페이스 정의하기
인터페이스는 특정 메서드 집합을 구현하는 값을 나타냅니다. 예를 들어, 다음과 같은 방식으로 인터페이스를 정의할 수 있습니다:
type Shape interface {
Area() float64
Perimeter() float64
}
위 코드에서 Shape
인터페이스는 Area
와 Perimeter
메서드를 구현하는 값을 나타냅니다.
인터페이스 사용하기
인터페이스를 사용하여 다른 데이터 타입들을 구조체와 연결할 수 있습니다. 예를 들어, 다음과 같이 Circle
과 Rectangle
구조체에 Shape
인터페이스를 구현할 수 있습니다:
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
}
type Rectangle struct {
Width float64
Height float64
}
func (r Rectangle) Area() float64 {
return r.Width * r.Height
}
func (r Rectangle) Perimeter() float64 {
return 2 * (r.Width + r.Height)
}
위 코드에서 Circle
과 Rectangle
구조체는 각각 Shape
인터페이스를 구현하는 방식으로 Area
와 Perimeter
메서드를 구현합니다.
인터페이스 활용하기
이제 다음과 같이 인터페이스를 사용하여 다양한 데이터 타입들을 처리할 수 있습니다:
func PrintShapeInfo(s Shape) {
fmt.Println("Area:", s.Area())
fmt.Println("Perimeter:", s.Perimeter())
}
위 PrintShapeInfo
함수는 Shape
인터페이스를 구현하는 어떤 값이든지 받아들일 수 있으며, 인터페이스의 다형성을 활용하여 다양한 데이터 타입을 처리할 수 있습니다.
인터페이스를 적절히 활용하면 코드를 보다 유연하게 구성할 수 있으며, 다형성을 통해 코드의 재사용 및 확장이 용이해집니다.
결론
Go 언어의 인터페이스 데이터 타입은 다양한 데이터 타입을 유연하게 다룰 수 있는 강력한 기능을 제공합니다. 이를 활용하여 코드를 유연하게 구성하고, 다형성을 활용하여 코드의 유지보수성을 향상시킬 수 있습니다.
참고: https://tour.golang.org/methods/9