Golang struct
-
一个结构体(
struct
)就是一个字段的集合type Vertex struct { X int _ int // 使用划线 _ 来做补丁 Y int } // 内置 type D struct {x, y float64} type D1 struct { D z float64 } // 赋值,即便是下划线补丁也要一个值 d1 := D1{D{0, 1}, 3} // 结构体指针 v := Vertex{1, 2} p := &v p.X = 1e9 fmt.Println(v) // 通过结构体字段的值作为列表来新分配一个结构体 // 使用 Name: 语法可以仅列出部分字段 // 特殊的前缀 & 返回一个指向结构体的指针 v1 = Vertex{1, 2} // 类型为 Vertex {1, 2} v2 = Vertex{X: 1} // Y:0 被省略 {1, 0} v3 = Vertex{} // X:0 和 Y:0 {0, 0} p = &Vertex{1, 2} // 类型为 *Vertex, &{1, 2}
注:结构体类型的值,不可以比较大小,但可以比较是否相等;比较时逐个项进行比较。
- 如果全部项的值都相等,这两个结构体类型的值才相等,否则不相等.
- 只有两个结构体类型是相同类型时才可以比较,相同结构体类型是说它们
项的顺序、名称、类型、标签
都相同。 - 结构体类型的变量直接赋值和作为函数的参数传递时,往往涉及大量内存的复制。
- 数组还可以通过切片来间接传递,但结构体的间接传递,就要使用指针了。