golang 结构 方法
更新时间:2023-12-24什么是结构体?
结构体是一种自定义的复合数据类型,可以用于组合不同类型的值,并对它们进行统一管理。在 Go 语言中,结构体通过 type 和 struct 关键字定义,type 用于定义新的类型,struct 用于定义结构体。
type Person struct {
Name string
Age int
}
上面的代码定义了一个名为 Person 的结构体,包含 Name 和 Age 两个字段,分别表示人的名字和年龄。
如何在结构体中定义方法?
在 Go 语言中,结构体可以定义方法,方法是一种特殊的函数,它与结构体相关联,可以在结构体实例上调用。
type Rectangle struct {
width, height float64
}
func (r Rectangle) Area() float64 {
return r.width * r.height
}
上面的代码定义了一个名为 Rectangle 的结构体,包含 width 和 height 两个字段,分别表示矩形的宽和高。它还定义了一个名为 Area 的方法,用于计算矩形的面积。
如何在方法中修改结构体字段的值?
在 Go 语言中,可以通过指针来修改结构体实例的字段值。如果一个结构体方法的接收者是指针类型,那么可以在方法中对结构体实例进行修改。
type Circle struct {
radius float64
}
func (c *Circle) SetRadius(r float64) {
c.radius = r
}
上面的代码定义了一个名为 Circle 的结构体,包含 radius 一个字段,表示圆的半径。它还定义了一个名为 SetRadius 的方法,用于设置圆的半径。
如何在结构体方法间共享数据?
在 Go 语言中,可以使用接口类型来实现方法间的数据共享。接口定义了一组方法,任何实现这些方法的类型都可以被视为实现了该接口,从而实现了方法间的数据共享。
type Shape interface {
Area() float64
Perimeter() float64
}
type Rectangle struct {
width, height float64
}
func (r Rectangle) Area() float64 {
return r.width * r.height
}
func (r Rectangle) Perimeter() float64 {
return 2 * (r.width + r.height)
}
上面的代码定义了一个名为 Shape 的接口,包含了 Area 和 Perimeter 两个方法。同时还定义了一个名为 Rectangle 的结构体,实现了 Shape 接口中的两个方法,并且可以通过 Shape 类型的变量进行访问。