什么是go语言结构体接口
在go语言中,结构体(struct)是一种自定义的数据类型,可以将不同的数据类型聚合在一起,形成一个新的数据类型。而接口(interface)则是一种描述对象行为的类型,它定义了对象应该具有的方法,但没有实现这些方法的代码。结构体接口则是在结构体中实现接口的功能。
结构体与接口的定义和实现
结构体的定义格式为:type 结构体名 struct { 成员变量名 类型1,成员变量2 类型2……}。例如,定义一个Rectangle(矩形)结构体:
type Rectangle struct { width float64 height float64 }
接口的定义格式为:type 接口名 interface { 方法名1(参数1 参数类型1) 返回值类型1 方法名2(参数2 参数类型2) 返回值类型2 ……}。例如,定义一个Shape(形状)接口:
type Shape interface { area() float64 perimeter() float64 }
在结构体中实现接口的功能,需要定义结构体的方法,方法的格式为:func (s 结构体名) 方法名() 返回值类型 { 方法实现 }。例如,在Rectangle结构体中实现Shape接口所定义的area()和perimeter()方法:
func (r Rectangle) area() float64 { return r.width * r.height } func (r Rectangle) perimeter() float64 { return 2 * (r.width + r.height) }
结构体接口的应用
结构体接口在实际应用中可以发挥很大的作用,例如,可以定义一个统一的图形类型,然后定义不同的形状的结构体,并实现图形接口,以实现对不同形状图形的统一操作。示例代码如下:
type Shape interface { area() float64 perimeter() float64 } type Rectangle struct { width float64 height float64 } func (r Rectangle) area() float64 { return r.width * r.height } func (r Rectangle) perimeter() float64 { return 2 * (r.width + r.height) } type Circle struct { radius float64 } func (c Circle) area() float64 { return math.Pi * c.radius * c.radius } func (c Circle) perimeter() float64 { return 2 * math.Pi * c.radius } func printShape(s Shape) { fmt.Printf("Area: %f\nPerimeter %f\n", s.area(), s.perimeter()) } func main() { r := Rectangle{width: 3, height: 4} c := Circle{radius: 5} printShape(r) printShape(c) }
以上代码实现了两个不同形状的图形的统一操作,并打印出其面积和周长。
结论
go语言的结构体和接口是其面向对象特性的重要组成部分,结构体可以用来定义自定义的数据类型,并实现接口的方法,实现不同类型的统一操作。接口则可以用来描述对象应该具有的方法,这些方法在装饰器模式等设计模式中具有重要作用。
本文来自投稿,不代表亲测学习网立场,如若转载,请注明出处:https://www.qince.net/golang-om-2.html
郑重声明:
本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。 若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。
我们不承担任何技术及版权问题,且不对任何资源负法律责任。
如遇到资源无法下载,请点击这里失效报错。失效报错提交后记得查看你的留言信息,24小时之内反馈信息。
如有侵犯您的版权,请给我们私信,我们会尽快处理,并诚恳的向你道歉!