结构体
Posted blue-tea
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了结构体相关的知识,希望对你有一定的参考价值。
结构体是用户定义的类型,表示一系列的集合。语法为 :type关键字 结构体名字 struct{ }
1.结构体声明
type Person struct { name string sex int age int ---------------------------------- sex,age int # 由于age和sex是相同类型的字段,可以定义在同一行 }
2.嵌套结构体
type Person struct {
name string
sex ,age int
hobby Hobby
}
type Hobby struct {
id int
name string
}
3.结构体嵌套+匿名字段
type Person struct {
name string
sex ,age int
Hobby
}
type Hobby struct {
id int
name string
}
4.定义初始化
func main() { person :=Person{} # 定义没有初始化 var person Person var person Person=Person{name:"lqz"} # 指名道姓传,可以只传一部分 var person Person=Person{"lqz",1,19} # 按位置传,必须要全传 //person.name="lqz" # 结构体是值类型,可以通过点(.)方法取值 fmt.Println(person.name) # 只有属性,没有方法 }
5.匿名结构体
a:=struct { name string age int }{"lqz",19} fmt.Printf(a.name) # 取值
6.结构体的零值
p:=Person{name:"lqz"} # 一般用驼峰体来定义变量和函数 pPoint: = &p var pPoint *Person=&p fmt.Println(pPoint) fmt.Println(pPoint.name) # 等价于 fmt.Println((*pPoint).name)
7.结构镶嵌体
package main import "fmt" func main() { p:=Person{name:"lqz",hobby:Hobby{10,"篮球"}} p:=Person{name:"lqz",hobby:Hobby{id:10,name:"篮球"}} p.hobby.id=101 fmt.Println(p.hobby.name) #结构体嵌套加匿名字段 p:=Person{name:"lqz",Hobby:Hobby{10,"篮球"}} //取p中的hobbyname fmt.Println(p.Hobby.hobbyname) fmt.Println(p.hobbyname) #变量提升过程中如果有重名的,就不提升了 p:=Person{name:"lqz",Hobby:Hobby{10,"篮球"}} fmt.Println(p.Hobby.name) fmt.Println(p.name) }
以上是关于结构体的主要内容,如果未能解决你的问题,请参考以下文章