为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
MMMHUHU 2023-05-15 14:52:23
文件1func 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 尚不存在,但可以从地图中随机分配一个值作为示例func iWantMaps(m) {    something := m[1]}这是我的项目结构:+/pkg+-->file1+-->file2考虑一个不断更新 file1 中的映射的 for 循环。我正在尝试:将整个映射从 file1 传输到 file2 中的函数能够通过 file2 中的函数从 file1 中的映射中检索键和值。
查看完整描述

1 回答

?
郎朗坤

TA贡献1921条经验 获得超9个赞

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


为简单起见,我将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)

}

但是,如果fn2被fn1调用,您可以在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可以存在于单独的或相同的文件中。


查看完整回答
反对 回复 2023-05-15
  • 1 回答
  • 0 关注
  • 86 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信