美文网首页
Golang struct

Golang struct

作者: 并肩走天涯 | 来源:发表于2014-12-16 15:32 被阅读1657次

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}
    

    注:结构体类型的值,不可以比较大小,但可以比较是否相等;比较时逐个项进行比较。

    • 如果全部项的值都相等,这两个结构体类型的值才相等,否则不相等.
    • 只有两个结构体类型是相同类型时才可以比较,相同结构体类型是说它们项的顺序、名称、类型、标签都相同。
    • 结构体类型的变量直接赋值和作为函数的参数传递时,往往涉及大量内存的复制
    • 数组还可以通过切片来间接传递,但结构体的间接传递,就要使用指针了。

相关文章

网友评论

      本文标题:Golang struct

      本文链接:https://www.haomeiwen.com/subject/iqjotttx.html