如何将地图值传递到其他文件

时间:2018-12-08 21:15:23

标签: go

文件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中的映射。 我正在尝试:

  • 将整个映射从file1传输到file2中的函数
  • 能够通过file2中的函数从file1中的映射中检索键和值。

1 个答案:

答案 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 都可以位于单独的文件或相同的文件中。

欢呼