package main import ( "fmt" "math" ) // 接口 type jiheti interface { area() float64 perim() float64 } // 在react、circle上实现接口 type rect struct { width, height float64 } type circle struct { radius float64 } // 在Go中实现一个接口就要实现所有方法 // 在rect上实现Go的接口 func (r rect) area() float64 { return r.width * r.height } func (r rect) perim() float64 { return 2*r.width + 2*r.height } //在circle上实现接口 func (c circle) area() float64 { return math.Pi*c.radius*c.radius } func (c circle) perim() float64 { return 2*math.Pi*c.radius } // 调用接口中指定的方法,通过此便可以调用任何`jiheti`的接口了 func me(j jiheti){ fmt.Println(j) fmt.Println(j.area()) fmt.Println(j.perim()) } func main() { r := rect{width: 3, height: 4} c := circle{radius: 5} me(r) me(c) }