2.3. 常用注意事项 8:结构体实现方法
g g study,d d up!
常用注意事项 8:结构体实现方法
8. 结构体可以实现方法,这些方法可以在结构体上调用,并且可以访问结构体的字段。方法可以用于结构体的行为,类似于面向对象编程中的方法。
以下是一个结构体实现方法的详细示例:
package main
import (
"fmt"
)
type Rectangle struct {
width float64
height float64
}
func (r Rectangle) area() float64 {
return r.width * r.height
}
func (r *Rectangle) resize(newWidth, newHeight float64) {
r.width = newWidth
r.height = newHeight
}
func main() {
r := Rectangle{5, 10}
fmt.Println("Width:", r.width, "Height:", r.height)
fmt.Println("Area:", r.area())
r.resize(3, 6)
fmt.Println("New Width:", r.width, "New Height:", r.height)
fmt.Println("New Area:", r.area())
}
在这个示例中,我们定义了一个Rectangle
结构体,该结构体具有两个公共字段width
和height
。我们还定义了两个方法:
area()
:计算矩形的面积,使用值接收器声明resize()
:调整矩形的大小,使用指针接收器声明
在area()
方法中,我们只需要访问结构体的字段来计算面积。因此我们使用值接收器声明,这意味着area()
方法会获得Rectangle
结构体的副本,而不是原始结构体。
在resize()
方法中,我们需要修改结构体的字段来调整矩形的大小。因此我们使用指针接收器声明,这意味着resize()
方法会获得Rectangle
结构体的指针,以便我们可以修改结构体的字段。
在main()
函数中,我们首先创建了一个Rectangle
结构体实例,并打印其宽度,高度和面积。接下来,我们调用resize()
方法,将矩形的大小调整为3 x 6。最后,我们再次打印宽度,高度和面积,以验证resize()
方法的工作是否正确。
总之,结构体可以通过方法来定义自己的行为,这使得 Go 语言非常适合构建面向对象的应用程序。
欢迎关注公众号上海php自学中心,一起交流。