如何访问全局变量

新手上路,请多包涵

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

在 main.go 中

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

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

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

阅读 1.1k
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 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题