美文网首页
Go语言之结构体嵌套

Go语言之结构体嵌套

作者: 测试探索 | 来源:发表于2020-06-02 23:25 被阅读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的地址
    }
    
    

    相关文章

      网友评论

          本文标题:Go语言之结构体嵌套

          本文链接:https://www.haomeiwen.com/subject/ejyyzhtx.html