Flands
V2EX  ›  问与答

golang 以下两种方式创建的 node 有啥区别?

  •  
  •   Flands · Jan 10, 2020 · 1742 views
    This topic created in 2313 days ago, the information mentioned may be changed or developed.
    type node struct {
        value int
        left, right *node
    }
    
    var node2 *node
    fmt.Print(node2) // <nil>
    fmt.Print("\n")
    
    var node3 = new(node)
    fmt.Print(node3) // &{0 <nil> <nil>}
    

    在学的时候发现有上面两种声明方式,node3 是个地址,node2 是个啥?
    两种有啥区别?以及分别什么情况下用?

    jybox
        1
    jybox  
       Jan 10, 2020
    node2 是一个空指针,打印出来就是 nil ; node3 是指向一个新初始化的 struct 的指针,打印出来的是这个新初始化的 struct。
    iamwho
        2
    iamwho  
       Jan 10, 2020
    The type *T is a pointer to a T value. Its zero value is nil.

    https://tour.golang.org/moretypes/1
    poplar50
        3
    poplar50  
       Jan 10, 2020 via Android   ❤️ 1
    第一种是声明 第二种声明加赋值
    Flands
        4
    Flands  
    OP
       Jan 10, 2020
    噢,二楼那个看懂了,感谢楼上大佬解答
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3372 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 13:00 · PVG 21:00 · LAX 06:00 · JFK 09:00
    ♥ Do have faith in what you're doing.