객체 지향 프로그래밍에서 다형성을 사용하면 객체가 클래스에 따라 다양한 동작을 나타낼 수 있습니다. 하지만 Go에서는 다형성 개념이 전통적인 의미로 구현되지 않습니다. 이에 대한 이유를 살펴보고 Go에서 유사한 기능을 달성하는 방법을 살펴보겠습니다.
Go는 전통적인 객체 지향 언어가 아닙니다. 다음을 사용하여 다른 접근 방식을 채택합니다:
객체 지향 언어와 달리 Go는 메서드 재정의 또는 가상 메서드를 지원하지 않습니다. 이를 통해 Go는 더 높은 수준의 유형 안전성을 유지할 수 있습니다.
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()
}
이 예에서 Foo는 공통 인터페이스이고 FooImpl은 자체 구현이 있는 파생 유형이며 Bar는 FooImpl을 사용하여 구성된 파생 유형입니다. getFoo() 함수는 Foo 인터페이스의 인스턴스를 반환하므로 다양한 파생 유형을 하나의 인터페이스 유형으로 처리할 수 있습니다.
이 접근 방식은 다양한 파생 유형을 인스턴스로 처리할 수 있도록 하여 Go에서 다형성 형태를 제공합니다. 공통 인터페이스입니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3