Home  >  Article  >  Backend Development  >  Golang function overloading and polymorphism

Golang function overloading and polymorphism

PHPz
PHPzOriginal
2024-04-15 21:42:01760browse

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.

Golang function overloading and polymorphism

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!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn