файл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. Я пытаюсь либо:

  • передать всю карту из файла1 в функцию в файле2
  • иметь возможность извлекать ключи и значения из карты в файле1 из функции в файле2.
go
-1
toti toto 9 Дек 2018 в 00:15

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

Если, однако, 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 могут находиться в отдельных или в одних и тех же файлах.

Ура

1
hscasn 8 Дек 2018 в 21:39