我注意到,在地圖中迭代鍵和值時,它們的鍵和值都共享同一個記憶體地址。你可以在這里看到:
package main
import "fmt"/span>
func main() {
myMap := map[string]string{
"hello"。"world"。
"how": "are"。
"你"。 "今天?"。
}
for key, value := range myMap {
fmt.Printf("key: %p %v
", &key, key)
fmt.Printf("Value: %p %v
", &value, value)
fmt.Println("--")
}
}
...輸出...
鍵。0xc00009e210 hello
值。0xc00009e220 world
---
鍵。0xc00009e210 how
值。0xc00009e220 are
---
關鍵。0xc00009e210 you
值。0xc00009e220今天?
---
為什么?
uj5u.com熱心網友回復:
你沒有取值的地址在地圖上。事實上,地圖元素在Go中是不可尋址的。你正在獲取本地回圈變數的地址,稱為 "key "和 "value"。這些變數在每次回圈迭代中都不會改變,因為沒有理由讓它們改變(它們被重復使用)。
參見:
為什么 Go 禁止獲取 (&) 地圖成員的地址,卻允許 (&) 切片元素?
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/313489.html
標籤:
