Go의 다형성
객체 지향 프로그래밍에서 다형성을 사용하면 단일 인터페이스가 여러 유형의 객체를 참조할 수 있습니다. Go는 이 개념을 엄격하게 적용하지는 않지만 유사한 동작을 달성하기 위한 대체 방법을 제공합니다.
다음 코드 조각을 고려하세요.
type Foo struct { ... } type Bar struct { Foo ... } func getFoo() Foo { return Bar{...} }
알다시피 Go에서 이 코드는 getFoo()가 Foo의 인스턴스를 반환해야 함을 나타내는 오류입니다. 다형성 동작을 달성하기 위해 Go에서 인터페이스와 구성을 활용할 수 있습니다.
package main import "fmt" type Foo interface { printFoo() } type FooImpl struct { } type Bar struct { FooImpl } type Bar2 struct { FooImpl } func (f FooImpl)printFoo(){ fmt.Println("Print Foo Impl") } func getFoo() Foo { return Bar{} } func main() { fmt.Println("Hello, playground") b := getFoo() b.printFoo() }
이 업데이트된 예에서는
이 기술은 인터페이스와 구성을 활용하여 Go에서 다형성을 달성하는 방법을 제공하므로 단일 인터페이스를 다양한 구체적인 유형에 사용할 수 있습니다.
위 내용은 Go는 다형성을 강제하지 않고 어떻게 구현합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!