go语言中interface的实践
package mainimport ( "fmt" "math")type geometry interface { area() float64 perim() float64}type square struct { width, height float64}type circle struct { radius float64}//要在go中实现一个接口,我们只需要实现接口中的所有方法//`square`的实现,s接收者接受了area()方法func (s square) area() float64 { return s.width * s.height}//`square`的实现,s接收者接受了perim()方法func (s square) perim() float64 { return 2*s.width + 2*s.height}//`circle`的实现,c接收者接受了area()方法func (c circle) area() float64 { return math.Pi * c.radius * c.radius}//`circle`的实现,c接收者接受了perim()方法func (c circle) perim() float64 { return 2 * math.Pi * c.radius}//如果一个变量或者参数是接口类型,那么我们可以调用这个被命名的接口中的方法func measure(g geometry) { fmt.Println(g) fmt.Println(g.area()) fmt.Println(g.perim())}func main() { //定义并初始化square、circle struct,可以理解为结构体的实例?结构体的接收者? s := square{width: 3, height: 4} c := circle{radius: 5} measure(s) measure(c)}//output:{3 4}1214{5}78.5398163397448331.41592653589793
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。