Variables 如何访问全局变量
如何在不同的.go包/文件中访问main.go中声明为/init的变量?一直告诉我变量未定义(我知道全局变量不好,但这只是用作时间戳) 总的来说,去吧Variables 如何访问全局变量,variables,go,global,main,Variables,Go,Global,Main,如何在不同的.go包/文件中访问main.go中声明为/init的变量?一直告诉我变量未定义(我知道全局变量不好,但这只是用作时间戳) 总的来说,去吧 var StartTime = time.Now() func main(){...} 正在尝试以其他.go文件访问StartTime 但是如果继续保持StartTime未定义我会“注入”StartTime变量,否则在包之间会有循环依赖关系 梅因,加油 var StartTime = time.Now() func main() { ot
var StartTime = time.Now()
func main(){...}
正在尝试以其他.go文件访问StartTime
但是如果继续保持StartTime未定义我会“注入”StartTime变量,否则在包之间会有循环依赖关系
梅因,加油
var StartTime = time.Now()
func main() {
otherPackage.StartTime = StartTime
}
otherpackage.go
var StartTime time.Time
我创建了一个包含代码的文件
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
它起作用了 我建议使用常用的导入方式 首先,我将解释它称为“相对导入”的方式,也许这种方式会导致一些错误 第二,我将解释常见的进口方式 第一: 在go版本>=1.12中,有一些关于导入文件的新提示和一些更改 1-您应该将文件放在另一个文件夹中,例如,我在“model”文件夹中创建了一个文件,文件名为“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)
}
注意
注意:我不推荐这种类型的导入
第二:
(正常进口)
导入文件的更好方法是:
您的结构应如下所示:
root
|_____github.com
|_________Your-account-name-in-github
| |__________Your-project-name
| |________main.go
| |________handlers
| |________models
|
|_________gorilla
|__________sessions
这是一个例子:
package main
import (
"github.com/gorilla/sessions"
)
func main(){
//you can use sessions here
}
因此,您可以在任何需要的地方导入“github.com/gorilla/sessions”…只需导入即可。变量名的第一个字母是否大写?是的,它是大写的,并且我的go build Fails运行程序时是否包括所有相关文件?也就是说,当运行代码时,您是否正在运行go run file1.go file2.go..etcYes,更简洁地说,我在main.go中有一个名为'var StartTime=time.Now()'的变量,但当我尝试在同一目录的另一个.go中访问StartTime时,它会说它未定义,我是否必须包含“main”在我试图调用的.go文件中?我的'dif'是一个restful API,在程序启动时不会被调用,但只有在通过URL调用时才会被调用,因此我需要将StartTime放入main.go并将其传递给dif,您正在将它从dif传递到main,感谢您的尝试!一个更好的方法是使用函数,而不是变量,只要让它成为一个函数,每当它被调用时,你就会得到一个时间戳。你不是在声明变量吗?