此代码在 Go PlayGround 上可见:
package main
import "fmt"
type MyType map[int]int
func (x MyType) updateIt() {
newItem := make(MyType)
for i := 0; i < 3; i++ {
newItem[i] = i
}
x = newItem
fmt.Println(x)
}
func main() {
x := make(MyType)
x.updateIt()
fmt.Println(x)
}
生产:
map[0:0 1:1 2:2]
map[]
虽然我期望:
map[0:0 1:1 2:2]
map[0:0 1:1 2:2]
为什么?
我的理解是:作为一个参数,然后创建并更改指针,使其指向。所以指向 的数据。这似乎确实是内部的情况,从第一行可以看出。但是,当在方法之后打印时,更改将丢失。x.updateIt()xnewItemxnewItemxnewItemupdateItx
我是Go的新手,这对我来说是意想不到的行为,你能解释一下吗?
慕斯709654
婷婷同学_
相关分类