在學習過程中,發現一個有趣的現象:
定義這樣一個結構
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不一致,在傳遞對象的時候要根據實際情況來決定是要傳遞指針還是值。
