Learn the polymorphic features in Golang through examples
Polymorphism is an important concept in object-oriented programming, which allows us to use a unified interface to handle different types Object. In Golang, polymorphism is implemented through interfaces. An interface defines the behavior of an object regardless of its specific type.
Let’s learn the polymorphic features in Golang through specific code examples. We assume that there is a graphics class Shape, which has a method Area() for calculating the area and a method Print() for printing information. We need to create different types of graphics and call their Area() and Print() methods.
First, we define an interface ShapeInterface to declare the behavior of graphics.
type ShapeInterface interface { Area() float64 Print() }
Then, we create two specific graphics types, Circle and Rectangle, both of which implement the ShapeInterface interface.
type Circle struct { radius float64 } func (c Circle) Area() float64 { return math.Pi * c.radius * c.radius } func (c Circle) Print() { fmt.Printf("This is a circle, radius: %.2f ", c.radius) } type Rectangle struct { width float64 height float64 } func (r Rectangle) Area() float64 { return r.width * r.height } func (r Rectangle) Print() { fmt.Printf("This is a rectangle, width: %.2f, height: %.2f ", r.width, r.height) }
Now, we can create different types of graphics objects and call their methods using polymorphism.
func main() { c := Circle{radius: 5} r := Rectangle{width: 4, height: 3} shapes := []ShapeInterface{c, r} for _, shape := range shapes { fmt.Printf("Area: %.2f ", shape.Area()) shape.Print() } }
The output results are as follows:
Area: 78.54 This is a circle, radius: 5.00 Area: 12.00 This is a rectangle, width: 4.00, height: 3.00
As can be seen from the above example, although we declare the ShapeInterface type through the interface, we can use polymorphism to create different types of graphic objects and methods to call them. In this way, we can handle different types of objects very flexibly without caring about their specific implementation.
Another thing to note is that polymorphism in Golang is implemented through interfaces, which is different from the way polymorphism is implemented using base classes and derived classes in other object-oriented languages. This makes Golang's polymorphic features more concise and flexible.
To summarize, through the above examples we can understand that the polymorphic features in Golang are implemented through interfaces. By defining a unified interface, we can handle different types of objects and call their methods, which makes our code more flexible and extensible.
The above is the detailed content of Based on examples, explore the learning methods of polymorphic features in Golang. For more information, please follow other related articles on the PHP Chinese website!