首页 文章

如何将映射值传递给其他文件

提问于
浏览
-2

file1

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)
}

file2 尚不存在,但是从 Map 中随机分配值将作为示例

func iWantMaps(m) {
    something := m[1]
}

这是我的项目结构:

+/pkg
+-->file1
+-->file2

考虑一个不断更新file1中的映射的for循环 . 我正试图:

  • 将整个映射从file1传输到file2中的函数

  • 能够从file2中的函数中检索file1中的映射中的键和值 .

1 回答

  • 0

    我不完全确定你要做什么,但从我的理解,你想确保第二个文件中的函数可以从第一个文件中的函数访问 Map ,对吗?

    为简单起见,我将 fn1 的函数称为 file 1fn2 函数位于 file 2 .

    它们不在不同文件中的事实不应影响任何事情,只要它们可以相互访问 . 另一种方法是在父函数(调用 fn1fn2 的函数)中声明您的映射,然后将此映射作为两个函数的参数传递 . 例如:

    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 中声明 Map 并将其传递给 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()
    }
    

    fn1fn2 可以存在于单独或相同的文件中 .

    干杯

相关问题