Go 中的 new(Struct) 和 &Struct{} 有什么区别?

他们似乎是一样的:


package main


import "fmt"


type S struct {

    i int

}


func main() {

  var s1 *S = new(S)

  fmt.Println(s1)


  var s2 *S = &S{}

  fmt.Println(s2)  // Prints the same thing.

}

更新:


嗯。我刚刚意识到没有明显的方法可以使用 new 初始化 Si。有没有办法做到这一点?new(S{i:1})似乎不起作用:/


桃花长相依
浏览 1009回答 3
3回答

拉莫斯之舞

从文档:作为一种限制情况,如果复合文字根本不包含任何字段,它会为该类型创建一个零值。表达式 new(File) 和 &File{} 是等价的。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go