Code Speaks:
package mainimport "fmt"import "math"/** * 定义几何接口 */type geometry interface { area() float64 perim() float64}/** * 定义矩形结构 */type rect struct { width, height float64}/** * 定义圆形结构 */type circle struct { radius float64}/** * 实现矩形面积方法 */func (r rect) area() float64 { return r.width * r.height}/** * 实现矩形周长方法 */func (r rect) perim() float64 { return 2*r.width + 2*r.height}/** * 实现圆形面积方法 */func (c circle) area() float64 { return math.Pi * c.radius * c.radius}/** * 实现圆形周长方法 */func (c circle) perim() float64 { return 2 * math.Pi * c.radius}/** * 接口做参数实现计算方法 * @param g geometry 接口参数 * @return */func measure(g geometry) { fmt.Println(g) fmt.Println(g.area()) fmt.Println(g.perim())}/** * main方法调用 * @return */func main() { r := rect{width: 3, height: 4} c := circle{radius: 5} /** * 多态调用 */ measure(r) measure(c)}
1.Golang中实现接口中定义的方法即被视为实现了接口,不需显示声明实现某接口
2.Golang的接口更大的作用是声明方法集合,而非类型约束