亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

結構上方法的參數傳遞語義是否完全由方法決定,而不是由調用者決定?

結構上方法的參數傳遞語義是否完全由方法決定,而不是由調用者決定?

Go
DIEA 2021-10-18 16:10:56
考慮下面的簡單程序,我們在指向結構的指針上定義一個方法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 回答

  • 1 回答
  • 0 關注
  • 156 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號