package main
import "fmt"
type Item struct {
val int
}
func main() {
var items []*Item
item := Item{}
items = append(items, &item)
x := items[0]
y := *x
x.val
fmt.Printf("x=%v, y=%v\n", *x, y)
}
這列印:
x={1}, y={0}
我不明白為什么價值觀不同。x是指向陣列中第一個元素的指標,我們使用 增加val欄位x,然后第一個元素已更改。y是第一個元素,它也val應該改變,但沒有改變?但是,如果y := *x陳述句移到 after x.val ,則值相等。為什么?
uj5u.com熱心網友回復:
只需要解釋這一行
y := *x
這意味著從這個指標 ( *x) 中獲取值并將其分配給y,現在y有一個新的非連接到x值。
uj5u.com熱心網友回復:
因為x已經是一個指向 Item 的指標。試試吧y := x
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/385996.html
下一篇:合并陣列中的專案,包括子專案
