您的位置:首页 > 编程语言 > Go语言

Go结构体嵌套

2020-06-05 07:21 176 查看

Go 结构体嵌套

package main

import "fmt"

//结构体嵌套
/*
结构体嵌套: 一个结构体中的字段,是另一个结构体类型
has a
*/
func main() {
b1 := Book{}
b1.bookName = "西游记"
b1.price = 45.8

s1 := Student{}
s1.name = "小明"
s1.age = 21
s1.book = b1
fmt.Println(b1)
fmt.Println(s1)
fmt.Printf("学生姓名: %s, 学生年龄: %d, 看的书:《%s》, 书的价格: %.2f\n",s1.name,s1.age,s1.book.bookName,s1.book.price)

//或者:
//s2 := Student{name: "狗子",age: 21,book: Book{bookName: "红楼梦",price: 45.85}}
s2 := Student{
name: "狗子",
age: 21,
book: Book{
bookName: "红楼梦",
price: 45.85,
},
}
fmt.Printf("学生姓名: %s, 学生年龄: %d, 看的书:《%s》, 书的价格: %.2f\n",s2.name,s2.age,s2.book.bookName,s2.book.price)

b4 := Book{
bookName: "呼啸山庄",
price: 76.8,
}
s3 := Student2{
name:"李四",
age: 18,
book: &b4,
}
fmt.Println(s3.name,s3.age)
fmt.Println("\t",s3.book.bookName,s3.book.price)

}
//1.定义一个书的结构体
type Book struct {
bookName string
price float64
}
//2.定义学生的结构体
type Student struct {
name string
age int
book Book
}
//结构体指针(建议使用),不用再拷贝一份,节省内存
type Student2 struct {
name string
age int
book *Book    //book的地址
}

结果:

{西游记 45.8}
{小明 21 {西游记 45.8}}
学生姓名: 小明, 学生年龄: 21, 看的书:《西游记》, 书的价格: 45.80
学生姓名: 狗子, 学生年龄: 21, 看的书:《红楼梦》, 书的价格: 45.85
李四 18
呼啸山庄 76.8
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: