Go lang의 다형성
알다시피 Go는 상속을 통한 전통적인 객체 지향 개념인 다형성을 지원하지 않습니다. 그러나 인터페이스와 구성을 사용하여 비슷한 결과를 얻을 수 있는 다른 방법도 있습니다.
인터페이스 및 구성
Go에서 인터페이스는 유형이 구현해야 하는 메서드를 지정하는 계약을 정의합니다. . 컴포지션을 사용하면 다른 유형을 삽입하여 새로운 유형을 만들 수 있습니다. 인터페이스와 구성을 결합하면 다형성 형태를 얻을 수 있습니다.
예를 들어 다음 코드를 생각해 보세요.
<code class="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() }</code>
이 예에서는
이 코드를 실행하면 다음 출력이 표시됩니다.
Hello, playground Print Foo Impl
이는 Go에서 인터페이스와 구성을 사용하여 다형성 형태를 달성하는 방법을 보여줍니다. 인터페이스를 정의하면 다양한 유형이 공통 메소드 세트를 공유하도록 할 수 있습니다. 유형을 포함하면 여러 다른 유형의 기능을 결합하는 새로운 유형을 만들 수 있습니다. 이를 통해 다양한 유형을 동일한 방식으로 처리하는 코드를 작성할 수 있습니다.
위 내용은 Go는 상속 없이 어떻게 다형성을 달성하나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!