在下面的代碼中,兩個指針變量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
- 1 回答
- 0 關注
- 98 瀏覽
添加回答
舉報
0/150
提交
取消