在golang中,我知道map函数之间是以引用的形式传递的,但是今天遇到了一个奇怪的情况。代码的运行结果不是我想象的那样。我将其简化为以下代码行。
.
├── go.mod
├── main.go
├── packageA
│ └── a.go
└── packageB
└── b.go
main.go 文件
package main
import (
"gostudy/packageA"
"gostudy/packageB"
)
func main() {
packageB.UseMap(packageA.M, packageA.InitMap)
}
前
package packageA
var M map[string]string
func InitMap() {
M = make(map[string]string)
M["hello"] = "go"
}
b.go
package packageB
import "fmt"
func UseMap(m map[string]string, callback func()) {
callback()
fmt.Println(m)
}
可以看到,a.go文件中只有一个全局声明的变量。我以为上面的程序应该输出map[hello:go],但它实际上输出了一个空的map[]。我对此很困惑,希望得到答案。
收到一只叮咚
喵喵时光机
相关分类