객체 지향 프로그래밍에서 다형성을 사용하면 객체가 클래스에 따라 다른 동작을 나타낼 수 있습니다. 하지만 Go에서는 다형성 개념이 전통적인 의미로 구현되지 않습니다. 그 이유를 알아보고 Go에서 유사한 기능을 구현하는 방법을 살펴보겠습니다.
Go는 전통적인 객체 지향 언어가 아닙니다. 다음을 사용하여 다른 접근 방식을 채택합니다.
객체 지향 언어와 달리 Go는 메소드 재정의 또는 가상 메소드를 지원하지 않습니다. 이를 통해 Go는 더 높은 수준의 유형 안전성을 유지할 수 있습니다.
Go에서 다형성과 유사한 동작을 달성하려면 다음 기술을 사용할 수 있습니다.
예:
<code class="go">package main import "fmt" // Common interface type Foo interface { printFoo() } // Derived type with unique implementation type FooImpl struct{} func (f FooImpl) printFoo() { fmt.Println("Print Foo Impl") } // Derived type composed using the common interface type Bar struct { FooImpl } // Function returning the common interface func getFoo() Foo { return Bar{} } func main() { fmt.Println("Hello, playground") b := getFoo() b.printFoo() }</code>
이 예에서 Foo는 공통 인터페이스입니다. , FooImpl은 자체 구현을 갖춘 파생 유형이고 Bar는 FooImpl을 사용하여 구성된 파생 유형입니다. getFoo() 함수는 Foo 인터페이스의 인스턴스를 반환하므로 다양한 파생 유형을 하나의 인터페이스 유형으로 처리할 수 있습니다.
이 접근 방식은 다양한 파생 유형을 인스턴스로 처리할 수 있도록 하여 Go에서 다형성 형태를 제공합니다. 공통 인터페이스입니다.
위 내용은 Go는 전통적인 메커니즘 없이 어떻게 다형성을 달성합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!