美文网首页
Learn Golang In Day 9

Learn Golang In Day 9

作者: 笑吧小鸟 | 来源:发表于2019-02-03 21:47 被阅读7次

    Learn Golang In Day 9

    简介


    结构体是自定义的数据结构

    定义结构体


    package main
    
    import "fmt"
    
    type Books struct {
        title string
        author string
        subject string
        bookid int
    }
    
    func main() {
        //创建一个结构体
        fmt.Println(Books{"Golang","菜鸟教程","Go语言",6453007})
    
        // key => value 方式赋值
        fmt.Println(Books{title: "Golang112",author: "",subject: "subject 哈哈", bookid:787823})
        // 字段可以省略
        fmt.Println(Books{subject: "subject 哈哈", bookid:787823})
    } 
    ``**
    
    
    ### 访问结构体成员
    ---
    

    package main

    import "fmt"

    type Books struct {
    title string
    author string
    subject string
    bookid int
    }

    func main() {
    var Book1 Books
    var Book2 Books

    /* Book1 描述 */
    Book1.title = "Book1 标题"
    Book1.author = "作者"
    Book1.subject = "课程"
    
    Book2.bookid = 1234
    
    fmt.Println(Book1, Book2)
    

    }

    
    
    ### 结构体指针
    ---
    - 结构体指针,大体上和C语言没有区别
    - 但是,**结构体指针是一个集合,让人无法理解**
    

    package main

    import "fmt"

    type Books struct {
    title string
    author string
    subject string
    bookid int
    }

    func main() {

    /* 第1种方式 */
    var Book1 Books = Books{"title1","author1", "subject2", 123}
    
    var ptr *Books = nil
    ptr = &Book1
    

    printBook(ptr)

    /* 第2种方式 */
    Book2 := Books{title: "标题", subject : "subje"}
    
    printBook(&Book2)
    

    }

    func printBook(book Books) {
    ptr := book
    fmt.Printf("func printBook, paramter address is %016x\n", ptr)
    fmt.Printf("--------------\n")
    fmt.Println(
    book)
    fmt.Printf("--------------\n")
    fmt.Printf("title: %s\n", (*book).title)

    }

    - 执行结果
    

    [Running] go run main.go


    func printBook, paramter address is &{00007469746c6531 00617574686f7231 7375626a65637432 000000000000007b}

    {title1 author1 subject2 123}

    title: title1
    func printBook, paramter address is &{0000e6a087e9a298 0000000000000000 0000007375626a65 0000000000000000}


    {标题 subje 0}

    title: 标题

    [Done] exited with code=0 in 0.255860 seconds

    相关文章

      网友评论

          本文标题:Learn Golang In Day 9

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