文件1
func loopFunc() {
m := make(map[int]net.Conn)
for i := 1; i < 10000; i++ {
c, err := l.Accept()
if err != nil {
fmt.Println(err)
return
}
m[i] = c
}
iWantMaps(m)
}
文件2 还不存在,但是可以从地图中随机分配一个值作为示例
func iWantMaps(m) {
something := m[1]
}
这是我的项目结构:
+/pkg
+-->file1
+-->file2
考虑一个for循环,该循环不断更新file1中的映射。 我正在尝试:
答案 0 :(得分:1)
我不确定您要做什么,但是据我了解,您想确保第二个文件中的功能可以从第一个文件中的功能访问地图,对吗?
为简单起见,我将调用 fn1 驻留在文件1 中的函数,并 fn2 驻留在文件中的函数2 。
只要它们可以互相访问,它们不在不同文件中的事实就不会影响任何东西。一种替代方法是在父函数(同时调用 fn1 和 fn2 的函数)中声明映射,然后将此映射作为两个函数的参数传递。例如:
func fn1(sessionMap map[int]int) {
for i := 1; i < 10000; i++ {
// do some work here
sessionMap[i] = i
}
}
func fn2(sessionMap map[int]int) {
for i := 1; i < 10000; i++ {
fmt.Println(sessionMap[i])
}
}
func main() {
sessionMap := make(map[int]int)
fn1(sessionMap)
fn2(sessionMap)
}
但是,如果 fn1 正在调用 fn2 ,则可以在 fn1 中声明地图并将其传递给 fn2 像这样:
func fn1() {
sessionMap := make(map[int]int)
for i := 1; i < 10000; i++ {
// do some work here
sessionMap[i] = i
}
fn2(sessionMap)
}
func fn2(sessionMap map[int]int) {
for i := 1; i < 10000; i++ {
fmt.Println(sessionMap[i])
}
}
func main() {
fn1()
}
fn1 和 fn2 都可以位于单独的文件或相同的文件中。
欢呼