考慮下面的簡單程序,我們在指向結構的指針上定義一個方法Vertex,然后用一個指針調用它。package mainimport ( "fmt")type Vertex struct { X, Y float64}func (v *Vertex) Mutate() { v.X = 8}func main() { v := &Vertex{3, 4} v.Mutate() fmt.Println(v.X)}這個程序的輸出是8,這是我們期望的,因為我們將一個指針傳遞給一個接受一個指針的方法。但是,以下調用的輸出也為 8。func main() { v := Vertex{3, 4} v.Mutate() fmt.Println(v.X)}對稱地,如果我們重新定義方法Mutate以采用 aVertex而不是指針,那么無論傳遞的是指針還是結構體,突變都會失敗。這種行為似乎意味著參數v或指向v傳遞的指針完全取決于方法的定義,而不是實際傳遞的內容。這是一個正確的解釋嗎,情況總是這樣嗎?如果不是,對這種行為的正確解釋是什么?
- 1 回答
- 0 關注
- 156 瀏覽
添加回答
舉報
0/150
提交
取消