go 结构体

定义结构体

  • struct 是域的集合
  • 定义结构体需要使用 type 和 struct 关键字

    package main
    
    import "fmt"
    
    type vertex struct {
      X int
      Y int
    }
    
    func main() {
      fmt.Println(vertex{1, 2})
    }
    
  • 声明结构体变量:结构体字面量代表使用列举的域给新分配的结构体赋值

    • var_name := struct_name {var1, var2...,varn}
    • var_name := struct_name {key1 : var1, key2 : val2..., keyn : varn}
    • 使用 key: 可以仅列出部分字段,与字段名顺序无关

      package main
      
      import "fmt"
      
      type vertex struct {
      X, Y int
      }
      
      var (
      v1 = vertex{1, 2}
      v2 = vertex{X : 1}
      v3 = vertex{}
      p = &vertex{2, 3}
      )
      
      func main() {
      fmt.Println(v1, v2, v3, p) //{1 2} {1 0} {0 0} &{2 3}
      }
      

访问结构体成员变量

  • 访问结构体成员变量用 . 操作符
  • 和 C++ 不一样,结构体指针访问结构体成员变量也用 . 操作符

    package main
    
    import "fmt"
    
    type vertex struct {
      X int
      Y int
    }
    
    func main() {
      v := vertex{1, 2}
      fmt.Println(v)
      p := &v
      p.X = 1e9
      fmt.Println(v)
    }
    
  • 结构体作为函数参数

相关