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

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

如何從定義它們的范圍之外引用指向同一結構對象的指針

如何從定義它們的范圍之外引用指向同一結構對象的指針

Go
拉莫斯之舞 2023-02-21 19:05:34
在下面的代碼中,兩個指針變量r1和r2(類型*Rect)引用相同的結構對象(類型Rect):type Rect struct {    width int}func main() {    r1 := new(Rect)    r2 := new(Rect)    r1 = r2    fmt.Printf("%p, %p", r1, r2) // prints the addresses of the Rects being pointed to by each variable}0xc00001c038, 0xc00001c038 (良好的輸出)您將如何從定義它們的函數外部引用r1和r2引用相同的結構對象?換句話說,您將如何創建一個函數來替換r1 = r2?我在外部函數中取消引用然后分配變量的嘗試未能成功引用r1到r2的引用結構對象:func assign(r1, r2 *Rect) {    *r1 = *r2}func main() {    r1 := new(Rect)    r2 := new(Rect)    assign(r1, r2)    fmt.Printf("%p, %p", r1, r2) // prints the addresses of the Rects being pointed to by each variable}0xc00001c030, 0xc00001c038 (錯誤輸出)游樂場: https://go.dev/play/p/ld0C5Bkmxo3
查看完整描述

1 回答

?
白衣非少年

TA貢獻1155條經驗 獲得超0個贊

如果您需要更改指針在函數中指向的位置,則必須傳遞它的地址:


func assign(r1, r2 **Rect) {

    *r1 = *r2

}


func main() {

    r1 := new(Rect)

    r2 := new(Rect)

    assign(&r1, &r2)


    fmt.Printf("%p, %p", r1, r2) // prints the addresses of the Rects being pointed to by each variable

}

游樂場: https://go.dev/play/p/5fAakjB50JJ


查看完整回答
反對 回復 2023-02-21
  • 1 回答
  • 0 關注
  • 98 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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