如何访问其他包中的变量

Pat*_*tfo 7 global-variables package go

如何将我的全局变量移动到 Go 中的其他包?

喜欢

package main
import "myapp/controllers"

var something string

func main(){ 
  something = "some text" 
}
Run Code Online (Sandbox Code Playgroud)

ASH*_*ASH 12

只是添加戴夫斯的答案,以及您可能遇到的另一个问题。变量名需要以大写字母开头才可见

package main
import "myapp/controllers"

var Something string

func main(){ 
  Something = "some text" 
}
Run Code Online (Sandbox Code Playgroud)

此外,如果 go.mod 文件中的模块名称很奇怪,您可能会遇到问题。在这个例子中,它应该看起来像这样

module myapp

go 1.16

require ()
Run Code Online (Sandbox Code Playgroud)


dav*_*ave 5

就像你想在你的包中有一个全局可访问的变量controllers?:

package controllers

var Something string
var SomethingElse string = "whatever"

func init(){ 
    Something = "some text" 
}
Run Code Online (Sandbox Code Playgroud)

然后你可以做

package main
import (
    "myapp/controllers"
    "fmt"
)

func main(){ 
    fmt.Println(controllers.Something, controllers.SomethingElse) //some text
}
Run Code Online (Sandbox Code Playgroud)

  • 我写的是想要在控制器中使用全局变量?我需要在主包中。 (2认同)