【问题标题】:How to access variables in other package如何访问其他包中的变量
【发布时间】:2017-01-25 18:17:40
【问题描述】:

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

喜欢

package main
import "myapp/controllers"

var something string

func main(){ 
  something = "some text" 
}

【问题讨论】:

    标签: go package global-variables


    【解决方案1】:

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

    package controllers
    
    var Something string
    var SomethingElse string = "whatever"
    
    func init(){ 
        Something = "some text" 
    }
    

    然后你就可以了

    package main
    import (
        "myapp/controllers"
        "fmt"
    )
    
    func main(){ 
        fmt.Println(controllers.Something, controllers.SomethingElse) //some text
    }
    

    【讨论】:

    • 我写的是想要控制器中的全局变量?我需要在主包中。
    • @PatrykGtfo 你需要添加另一个包(这里我们称之为 x),并在其中放置一些全局变量以进行导出。当其他包需要这些变量时,只需要导入这个包x即可。
    • @PatrykGtfo go 没有全局变量,go 只有包级变量,main 中创建的变量不能直接在其他包中使用
    【解决方案2】:

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

    package main
    import "myapp/controllers"
    
    var Something string
    
    func main(){ 
      Something = "some text" 
    }
    

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

    module myapp
    
    go 1.16
    
    require ()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-17
      • 1970-01-01
      • 2018-04-25
      • 1970-01-01
      相关资源
      最近更新 更多