我对golang很新,这应该是一个简单的答案,但我已经尝试过搜索每一个没有运气的地方。
如何在不同的.go包/文件中访问main.go中声明为/ init的全局变量?继续告诉我变量是未定义的(我知道全局变量很糟糕,但这只是用作时间戳)
在main.go
'
'
Console.WriteLine()
Next
尝试在不同的.go文件中访问StartTime 但一直未定义StartTime
答案 0 :(得分:60)
我会“注入”starttime变量,否则你在包之间会有一个循环依赖。
main.go
var StartTime time.Time
otherpackage.go
df <- data.frame(ID=c(rep("A1",10),rep("A2",13),rep("A3",12)),
Values=c(10,2,4,23,10,5,20,15,13,21,15,9,19,5,14,25,18,19,31,26,4,21,4,6,7,12,15,18,25,20,16,29,21,19,10))
答案 1 :(得分:7)
我创建了一个包含代码的文件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
有效!
答案 2 :(得分:1)
在go版本> = 1.12中,有一些有关导入文件的新提示和一些更改。
1-您应该将文件放在另一个文件夹中,例如,我在“模型”文件夹中创建了一个文件,文件名为“ example.go”
2-要导入文件,必须使用大写字母!
3-对于要导入其他文件的变量,结构和函数,请使用大写字母
注意:无法将main.go导入另一个文件中。
文件目录为:
root
|_____main.go
|_____model
|_____example.go
这是一个例子。
package model
import (
"time"
)
var StartTime = time.Now()
这是main.go,要导入文件时应使用大写字母。 “ Mod”以大写字母开头
package main
import (
Mod "./model"
"fmt"
)
func main() {
fmt.Println(Mod.StartTime)
}