例如傳遞一個結構體和結構體的指針有什麼區別,他們不是兩個指針嗎?
var myStructRef *Vertex
var myStruct Vertex
myStructRef = &Vertex{2, 3}
myStruct = Vertex{2, 3}
fmt.Println(myStructRef)
fmt.Println(myStruct)
changeByReferenceStruct(myStructRef)
changeByValueStruct(myStruct)
fmt.Println(myStructRef)
fmt.Println(myStruct)
而且
func changeByValueStruct(myStruct Vertex) {
myStruct.X = 5
fmt.Println(myStruct)
}
func changeByReferenceStruct(myStruct *Vertex) {
myStruct.X = 7
fmt.Println(myStruct)
}
是不是都myStructRef *Vertex
和myStruct Vertex
指向結構本身的指針?爲什麼在修改函數中的結構時,行爲會有差異?
golang是否在changeByValueStruct
中創建了一個新的結構,它解析參數?
結構值是一個結構值,而不是指向結構值的指針;指向結構值的指針是指針,而不是指向指針的指針。 Go文檔中的內容給出了普通結構值是指針的印象? – Adrian