Golang глобальной переменной

Я новичок в golang, это должен быть простой ответ, но я пробовал поиск везде, но безрезультатно.

Как получить доступ к глобальной переменной, которая была объявлена/init в моем main.иди в другой .перейти пакет / файл? Твердят, что переменная не определена (я знаю, что глобальные переменные-это плохо, но это просто будет использоваться как метка)

в Main.go

var StartTime = time.Now()
func main(){...}

попытка доступа к StartTime в другом .go file но продолжайте получать StartTime undefined

2 ответов


вместо этого я бы "впрыснул" переменную starttime, иначе у вас есть круговая зависимость между пакетами.

main.go

var StartTime = time.Now()
func main() {
   otherPackage.StartTime = StartTime
}

otherpackage.go

var StartTime time.Time

создать файл dif.go что содержит ваш код:

package dif

import (
    "time"
)

var StartTime = time.Now()

вне папки я создаю свой main.go, это нормально!

package main

import (
    dif "./dif"
    "fmt"
)

func main() {
    fmt.Println(dif.StartTime)
}

выходы:

2016-01-27 21:56:47.729019925 +0800 CST

структура каталогов файлов:

folder
  main.go
  dif
    dif.go

это работает!