猿问

如何访问全局变量

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


在 main.go


var StartTime = time.Now()

func main(){...}

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


一只斗牛犬
浏览 209回答 3
3回答

不负相思意

我会“注入” starttime 变量,否则包之间会有循环依赖。main.govar StartTime = time.Now()func main() {   otherPackage.StartTime = StartTime}其他包.govar StartTime time.Time

手掌心

我创建了一个dif.go包含您的代码的文件:package difimport (    "time")var StartTime = time.Now()在我创建的文件夹外,没问题main.go!package mainimport (    dif "./dif"    "fmt")func main() {    fmt.Println(dif.StartTime)}输出:2016-01-27 21:56:47.729019925 +0800 CST文件目录结构:folder  main.go  dif    dif.go有用!

慕盖茨4494581

我建议使用常用的导入方式。首先我将解释它称为“相对导入”的方式,也许这种方式会导致一些错误其次,我将解释常见的导入方式。第一的:在 go version >= 1.12 中,有一些关于导入文件的新提示和一些变化。1-您应该将文件放在另一个文件夹中,例如我在“model”文件夹中创建了一个文件,文件名为“example.go”2- 导入文件时必须使用大写!3- 将大写用于要导入其他文件的变量、结构和函数注意:无法将 main.go 导入到另一个文件中。文件目录为:root|_____main.go|_____model          |_____example.go这是一个example.go:package modelimport (    "time")var StartTime = time.Now()这是 main.go 当你想导入一个文件时你应该使用大写。“Mod”以大写开头package mainimport (    Mod "./model"    "fmt")func main() {    fmt.Println(Mod.StartTime)}笔记!!!注意:我不推荐这种类型的导入!第二:(正常进口)导入文件的更好方法是:你的结构应该是这样的:root|_____github.com         |_________Your-account-name-in-github         |                |__________Your-project-name         |                                |________main.go         |                                |________handlers         |                                |________models         |                        |_________gorilla                         |__________sessions这是一个例子:package mainimport (    "github.com/gorilla/sessions")func main(){     //you can use sessions here}所以你可以在任何你想要的地方导入“github.com/gorilla/sessions”......只需导入它。
随时随地看视频慕课网APP

相关分类

Go
我要回答