Go语言结构体

2018-09-27  本文已影响0人  AuglyXu

结构体


结构体变量的定义


结构体的初始化

type Person struct{
    name string
    age int
}
var per Person = Person{"xxz",20}
per2 :=  Person{"xxz",20}
type Person struct{
    name string
    age int
}
var per Person
per = Person{"xxz",20}
per = Person{name:"xxz",age:20}
type Person struct{
  name string
  age int
}
var per Person
per = {name:"xxz"}

结构体和函数

type Person struct{
  name string
  age int
}
pp := Person{name:"xxz",age:18}
fmt.Println(pp.name)//"xxz"
change(pp)
fmt.Println(pp.name)//"xxz"

func change(pp Person){
  pp.name = "zs"
}

复杂的结构体

type Person struct{
    name string
    age int
    sce []int
    dict map[string]string
}

var per Person
per.name = "xxz"// 不报错
per.age = 18//不报错

//per.sce[0] = 1//报错
//per.dict["name"] = "xxz"//报错
per.sce = make([]int,2)
per.sce[0] = 1
per.sce[1] = 2 //不报错
per.dict = make(map[string]string)
per.dict["name"] = "zs"
fmt.Println(per)//不报错

结构体类型的转换


结构体匿名属性

type Person struct{
  int
  name string
}
var per Person = Person{666,"xxz"}
fmt.Println(per.int)//666
type Date struct{
  year int
  month int
  day int
}
type Person struct{
  name string
 // year int
 // month int
 // day int
  Date 
}
type Animal struct{
  name string
 // year int
 // month int
 // day int
 // birthday Date 
  Date
}

/ /定义

var per Person = {"xxz",Date{1998,4,9}}
fmt.Println(per.name)//"xxz"
fmt.Println(per.Date.year)// 1998

结构体嵌套定义

type 结构体名称1 struct{
}
type 结构体名称2 struct{
    结构体名称1
}
type 结构体名称1 struct{
}
type 结构体名称2 struct{
    结构体名称1
}
type 结构体名称3 struct{
    结构体名称2
}
type 结构体名称1 struct{
}
type 结构体名称2 struct{
}
type 结构体名称3 struct{
    结构体名称1
    结构体名称2
}
上一篇下一篇

猜你喜欢

热点阅读