Go 언어에서는 함수를 인터페이스 값으로 저장할 수 있으므로 다형성을 달성할 수 있습니다. 즉, 인터페이스를 정의하고 메서드 시그니처 세트를 지정합니다. 인터페이스를 구현하고 이에 대한 이러한 메서드를 구현하는 형식을 만듭니다. 인터페이스 값을 입력으로 받아들이는 함수를 정의합니다. 실제 유형에 관계없이 함수에서 인터페이스 값만 사용하는 메서드입니다. 다형성을 달성하기 위해 다양한 유형의 값을 사용하여 함수를 호출합니다.
Go 언어에서는 함수를 인터페이스 값으로 저장할 수 있으므로 Go 언어 자체가 객체 지향이 아니더라도 다형성을 달성할 수 있습니다.
인터페이스는 인터페이스를 구현하는 유형으로 구현해야 하는 메서드 집합의 서명을 정의합니다. 예를 들어 Shape
인터페이스를 정의합니다: Shape
接口:
type Shape interface { Area() float64 }
我们可以创建实现 Shape
接口的类型,如下所示:
type Rectangle struct { width, height float64 } func (r Rectangle) Area() float64 { return r.width * r.height } type Circle struct { radius float64 } func (c Circle) Area() float64 { return math.Pi * c.radius * c.radius }
现在,我们创建了一个 Shape
接口,我们可以使用函数作为其值。为此,我们定义一个 calculateArea
函数,它接受一个 Shape
接口值作为输入。
func calculateArea(s Shape) float64 { return s.Area() }
现在,让我们创建一个实例来演示多态性是如何实现的。
func main() { // 创建一个 Rectangle 和一个 Circle r := Rectangle{width: 2, height: 3} c := Circle{radius: 5} // 使用函数计算他们的面积 areaR := calculateArea(r) areaC := calculateArea(c) fmt.Println("Rectangle area:", areaR) fmt.Println("Circle area:", areaC) }
输出:
Rectangle area: 6 Circle area: 78.53981633974483
在这个例子中,calculateArea
函数只使用传入的 Shape
接口的 Area
方法,无论实际类型是 Rectangle
还是 Circle
rrreee
Shape
인터페이스를 구현하는 유형을 생성할 수 있습니다. 🎜rrreee🎜함수 사용 인터페이스 값🎜🎜이제 Shape
인터페이스를 만들었으므로 함수를 값으로 사용할 수 있습니다. 이를 위해 Shape
인터페이스 값을 입력으로 받아들이는 calculateArea
함수를 정의합니다. 🎜rrreee🎜실용 사례🎜🎜이제 다형성이 어떻게 구현되는지 보여주는 예제를 만들어 보겠습니다. 🎜rrreee🎜출력: 🎜rrreee🎜이 예에서 calculateArea
함수는 전달된 Shape
인터페이스의 Area
메서드만 사용합니다. 실제 유형은 Rectangle
또는 Circle
입니다. 이것이 다형성의 구현이다. 🎜위 내용은 객체 지향 프로그래밍에서 golang 함수의 다형성 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!