Home > Article > Backend Development > Golang function overloading and polymorphism
Go language does not support function overloading, but polymorphism is achieved through interfaces. An interface defines methods that a type that implements the interface must implement, allowing the same interface type to be used to represent different types of objects and implement different behaviors.
Function overloading and polymorphism in Go language
Function overloading
Function overloading allows the creation of multiple functions with the same name in the same scope, but the parameter lists of the functions (parameter type, number and order) are different. The Go language does not support function overloading in the traditional sense.
Polymorphism
Polymorphism allows using the same interface type to represent different types of objects, thereby achieving different behaviors. Go language implements polymorphism through interfaces. An interface defines a set of methods that a type that implements the interface must implement.
Practical case
The following is an example of using interfaces to implement polymorphism:
// Shape 接口定义了形状的基本操作 type Shape interface { Area() float64 Perimeter() float64 } // Circle 结构体实现了 Shape 接口 type Circle struct { Radius float64 } func (c Circle) Area() float64 { return math.Pi * c.Radius * c.Radius } func (c Circle) Perimeter() float64 { return 2 * math.Pi * c.Radius } // Square 结构体实现了 Shape 接口 type Square struct { Side float64 } func (s Square) Area() float64 { return s.Side * s.Side } func (s Square) Perimeter() float64 { return 4 * s.Side } // 计算不同形状的面积和周长 func CalculateShape(s Shape) { fmt.Println("面积:", s.Area()) fmt.Println("周长:", s.Perimeter()) } func main() { circle := Circle{Radius: 5.0} square := Square{Side: 3.0} // 使用相同的 CalculateShape 函数计算不同形状的面积和周长 CalculateShape(circle) CalculateShape(square) }
In this example, Shape
The interface defines the Area
and Perimeter
methods, and the Circle
and Square
structures implement the interface. The CalculateShape
function receives a parameter of Shape
interface type and calculates its area and perimeter, thus achieving polymorphism.
The above is the detailed content of Golang function overloading and polymorphism. For more information, please follow other related articles on the PHP Chinese website!