如何访问全局变量

新手上路,请多包涵

如何在不同的 .go 包/文件中访问在我的 main.go 中声明/初始化的变量?一直告诉我变量未定义(我知道全局变量不好,但这只是用作时间戳)

在 main.go 中

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

尝试在不同的 .go 文件中访问 StartTime 但一直未定义 StartTime

原文由 Nighthee 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.2k
2 个回答

我会改为“注入” starttime 变量,否则包之间存在循环依赖关系。

主程序

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

其他包.go

 var StartTime time.Time

原文由 olif 发布,翻译遵循 CC BY-SA 3.0 许可协议

我创建了一个文件 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

有用!

原文由 joy miao 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题