V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Flands
V2EX  ›  问与答

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

  •  
  •   Flands · 2020-01-10 22:29:03 +08:00 · 1222 次点击
    这是一个创建于 1808 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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  
       2020-01-10 22:33:11 +08:00
    node2 是一个空指针,打印出来就是 nil ; node3 是指向一个新初始化的 struct 的指针,打印出来的是这个新初始化的 struct。
    iamwho
        2
    iamwho  
       2020-01-10 22:36:08 +08:00
    The type *T is a pointer to a T value. Its zero value is nil.

    https://tour.golang.org/moretypes/1
    poplar50
        3
    poplar50  
       2020-01-10 22:45:19 +08:00 via Android   ❤️ 1
    第一种是声明 第二种声明加赋值
    Flands
        4
    Flands  
    OP
       2020-01-10 22:51:31 +08:00
    噢,二楼那个看懂了,感谢楼上大佬解答
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   886 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 22:18 · PVG 06:18 · LAX 14:18 · JFK 17:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.