Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Variables 如何访问全局变量_Variables_Go_Global_Main - Fatal编程技术网

Variables 如何访问全局变量

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

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

总的来说,去吧

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,感谢您的尝试!一个更好的方法是使用函数,而不是变量,只要让它成为一个函数,每当它被调用时,你就会得到一个时间戳。你不是在声明变量吗?