• Как сделать переменную глобальной на все пакеты в golang?

    @mantyr
    Пишу много Golang кода с удовольствием:)
    Есть такая штука, называется "инициализация". Вы в main пакете инициализируете всё что вам нужно, например:
    1. инициализируете доступ к BD
    2. инициализируете свои пакеты с бизнес логикой
    3. инициализируете другие какие-то пакеты которые вам нужны в main
    При этом при инициализации пакета которому нужен доступ к BD, вы просто передаёте ему ссылку на уже открытый дескриптор.
    package main
    import "mypackage"
    // import DB package
    
    var DB *sql.DB
    
    func init() {
       DB = sql.Open()
       mypackage.DB = DB
    }
    
    func main() {
       mypackage.myfunction1() 
       mypackage.myfunction2()
    }
    Ответ написан
    2 комментария