码迷,mamicode.com
首页 > 编程语言 > 详细

go语言中interface的实践

时间:2018-11-07 16:37:32      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:参数   Go语言   1.4   ret   math   结构   UNC   height   geometry   

package main import ( "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} 12 14 {5} 78.53981633974483 31.41592653589793

go语言中interface的实践

标签:参数   Go语言   1.4   ret   math   结构   UNC   height   geometry   

原文地址:http://blog.51cto.com/huwho/2314041

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!