Go语言之结构体嵌套
2020-06-02 本文已影响0人
测试探索
Go语言之结构体嵌套
在type Student2 struct结构体中,注意book参数引用的是地址,方便修改数据
package main
import "fmt"
func main() {
b1 := Book{}
b1.bookName = "西游记"
b1.price = 45.8
s1 := Student{}
s1.name = "王二狗"
s1.age = 18
s1.book = b1 //值传递
fmt.Println(b1) //{西游记 45.8}
fmt.Println(s1) // {王二狗 18 {西游记 45.8}}
fmt.Printf("学生姓名:%s,学生年龄:%d,看的书是《%s》,书的价格是:%.2f\n", s1.name, s1.age, s1.book.bookName, s1.book.price)
s1.book.bookName= "红楼梦"
fmt.Println(b1) //{西游记 45.8}
fmt.Println(s1) //{王二狗 18 {红楼梦 45.8}}
b4 := Book{bookName:"呼啸山庄",price:57.9}
s4 := Student2{
name: "Ruby",
age: 18,
book: &b4,
}
fmt.Println("b4",b4) //{呼啸山庄 57.9}
fmt.Println("s4",s4) //{Ruby 18 0xc0000964a0}
fmt.Println("\t",s4.book) // &{呼啸山庄 57.9}
s4.book.bookName = "雾都孤儿"
fmt.Println("b4",b4) // {雾都孤儿 57.9}
fmt.Println("s4",s4) // {Ruby 18 0xc000004500}
fmt.Println("\t",s4.book) // &{雾都孤儿 57.9}
s2 := Student{name: "李小华", age: 19, book: Book{bookName: "Go语言是如何炼成的", price: 89.7}}
fmt.Println(s2) //{李小华 19 {Go语言是如何炼成的 89.7}}
s3 := Student{
name: "jerry",
age: 17,
book: Book{
bookName: "十万个为什么",
price: 55.9,
},
}
fmt.Println(s3.name,s3.age)
fmt.Println("\t",s3.book.bookName,s3.book.price)
}
//定义一个书的结构体
type Book struct {
bookName string
price float64
}
//定义学生的结构体
type Student struct{
name string
age int
book Book
}
type Student2 struct{
name string
age int
book *Book //book的地址
}