目录
一、定义
type Entin struct {
Name string
Age int
Sex bool
Hobbies []string
}
二、赋值
var a Entin
a.Name = "Entin"
a.Age = 18
a.Sex = true
a.Hobbies = []string{"Singing", "Dancing"}
fmt.Println(a) // {Entin 18 true [Singing Dancing]}
// 这种方式赋值可以不按顺序
b := Entin{
Name: "Entin",
Hobbies: []string{"Singing", "Dancing"},
Sex: true,
Age: 18,
}
fmt.Println(b) // {Entin 18 true [Singing Dancing]}
// 这种方式赋值一定要按顺序
c := Entin{
"Entin", 18, true, []string{"Singing", "Dancing"},
}
fmt.Println(c) // {Entin 18 true [Singing Dancing]}
// 使用new得到的是结构体的地址
d := new(Entin)
d.Name = "Entin"
fmt.Println(d) // &{Entin 0 false []}
e := d
e.Age = 18
fmt.Println(d) // &{Entin 18 false []}
三、结构体的方法
type Entin struct {
Name string
Age int
Sex bool
Hobbies []string
}
func (f *Entin)Sing(name string){
fmt.Printf("%v is singing %v.", f.Name, name)
}
func main(){
entin := Entin{
"Entin", 18, true, []string{"Singing"},
}
entin.Sing("a song")
}
/*
输出结果:
Entin is singing a song.
*/
四、结构体嵌套结构体
type Entin struct {
Name string
Figure
}
type Figure struct {
Height int
Weight int
}
func (a *Figure)figure(){
fmt.Printf("weight = %d, height = %d", a.Height, a.Weight)
}
func main(){
entin := Entin{Name: "Entin"}
entin.Height = 188
entin.Weight = 77
fmt.Println(entin)
entin.figure()
}
/*
输出结果:
{Entin {188 77}}
weight = 188, height = 77
*/