struct】 结构【golang】


没有类,只有结构。结构可以有方法。

结构是一种类型。它也是字段的集合

定义

type Vertex struct {

    X, Y int

}

创建

var v = Vertex{1, 2}

var v = Vertex{X: 1, Y: 2} 通过使用键定义值来创建结构

var v = []Vertex{{1,2},{5,2},{5,5}} 初始化一个结构片

访问成员

v.X = 4

可以在结构上声明方法。

要在其上声明方法的结构(接收类型)位于func关键字和方法名称之间

每次方法调用时都会复制结构(!)

func (v Vertex) Abs() float64 {

    return math.Sqrt(v.X*v.X + v.Y*v.Y)

}

调用方法

v.Abs()

对于变异方法,您需要使用指向结构的指针(见下文)作为类型。这样,就不会为方法调用复制结构值。

func (v *Vertex) add(n float64) {

    v.X += n

    v.Y += n

}

匿名结构

比使用“map[string]interface{}”更便宜、更安全。

point := struct {

    X, Y int

}{1, 2}


腾图小抄 SCWY.net v0.03 小抄561条 自2022-01-02访问365242次