标签:imp string name print pre 提升 没有 fun 变量
结构体是用户定义的类型,表示一系列的集合。语法为 :type关键字 结构体名字 struct{ }
type Person struct { name string sex int age int ---------------------------------- sex,age int # 由于age和sex是相同类型的字段,可以定义在同一行 }
type Person struct {
name string
sex ,age int
hobby Hobby
}
type Hobby struct {
id int
name string
}
type Person struct {
name string
sex ,age int
Hobby
}
type Hobby struct {
id int
name string
}
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) # 只有属性,没有方法 }
a:=struct { name string age int }{"lqz",19} fmt.Printf(a.name) # 取值
p:=Person{name:"lqz"} # 一般用驼峰体来定义变量和函数 pPoint: = &p var pPoint *Person=&p fmt.Println(pPoint) fmt.Println(pPoint.name) # 等价于 fmt.Println((*pPoint).name)
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) }
标签:imp string name print pre 提升 没有 fun 变量
原文地址:https://www.cnblogs.com/blue-tea/p/12037285.html