Go語言中使用new初始化對象和直接字面量方式初始化的區別


在學習過程中,發現一個有趣的現象:

定義這樣一個結構

type Bird struct {
  Name string
}

main中有如下代碼:

bird1 := Bird{Name:"Big"}
bird2 := new(Bird)
bird2.Name = "Small"
fmt.Println(reflect.TypeOf(bird1).String())
fmt.Println(reflect.TypeOf(bird2).String())

執行之后可以看到結果 

InterfaceDemo.Bird
*InterfaceDemo.Bird

 

可以看到上面兩種方式,結果不一致。

 

總結:加&符號和new的是指針對象,沒有的則是值對象,這點和C#、java不一致,在傳遞對象的時候要根據實際情況來決定是要傳遞指針還是值。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM