c语言编程笔录

首页 >   > 笔记大全

笔记大全

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 类型的变量进行访问。