如何访问全局变量

Nig*_*hee 41 variables program-entry-point global go

我对golang很新,这应该是一个简单的答案,但我试着搜索每一个没有运气的地方.

如何在不同的.go包/文件中访问main.go中声明为/ init的全局变量?继续告诉我变量是未定义的(我知道全局变量很糟糕,但这只是用作时间戳)

在main.go

var StartTime = time.Now()
func main(){...}
Run Code Online (Sandbox Code Playgroud)

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

oli*_*lif 63

我会"注入"starttime变量,否则你的包之间会有一个循环依赖.

main.go

var StartTime = time.Now()
func main() {
   otherPackage.StartTime = StartTime
}
Run Code Online (Sandbox Code Playgroud)

otherpackage.go

var StartTime time.Time
Run Code Online (Sandbox Code Playgroud)

  • 你不是重新声明变量吗? (2认同)

小智 8

我创建一个dif.go包含您的代码的文件:

package dif

import (
    "time"
)

var StartTime = time.Now()
Run Code Online (Sandbox Code Playgroud)

在我创建文件夹的外部main.go,没关系!

package main

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

func main() {
    fmt.Println(dif.StartTime)
}
Run Code Online (Sandbox Code Playgroud)

输出:

2016-01-27 21:56:47.729019925 +0800 CST
Run Code Online (Sandbox Code Playgroud)

文件目录结构:

folder
  main.go
  dif
    dif.go
Run Code Online (Sandbox Code Playgroud)

有用!