Go에는 전통적인 다형성이 없지만 인터페이스와 리플렉션을 사용하여 유사한 효과를 얻을 수 있습니다. 즉, 인터페이스를 정의하고 메서드 세트를 명확하게 합니다. 이 인터페이스를 구현하는 여러 유형을 만듭니다. 특정 유형을 알지 못한 채 리플렉션을 사용하여 메서드를 동적으로 호출합니다.
Go에서 다형성
을 구현하는 방법은 무엇인가요?
Go에는 전통적인 의미의 다형성이 없지만 인터페이스와 반사 메커니즘을 사용하여 다형성과 유사한 동작을 달성할 수 있습니다.
인터페이스:
반사:
구현 단계:
예:
<code class="go">type Shape interface { Area() float64 } type Square struct { side float64 } func (s *Square) Area() float64 { return s.side * s.side } type Circle struct { radius float64 } func (c *Circle) Area() float64 { return math.Pi * c.radius * c.radius } func main() { shapes := []Shape{ &Square{side: 5}, &Circle{radius: 5}, } for _, s := range shapes { fmt.Println("Area:", reflect.ValueOf(s).MethodByName("Area").Call([]reflect.Value{})[0].Float()) } }</code>
장점:
단점:
위 내용은 golang에서 다형성을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!