从另一个函数创建全局变量

时间:2015-07-30 11:52:41

标签: json go global-variables

如何使全局json配置并在任何地方使用它?

func indexHandler(w http.ResponseWriter, r *http.Request) {
  // Use config
    fmt.Println(config["Keywords"]) // <-- USE HERE
}

func main() {
    config := models.Conf() // Init there!
    fmt.Println(config.Keywords) // This prints "keywords1" - good

    // Routes
    http.HandleFunc("/", indexHandler)

    // Get port
    http.ListenAndServe(":3000", nil)
}

完整代码:https://gist.github.com/liamka/15eec829d516da4cb511

1 个答案:

答案 0 :(得分:2)

问题很简单,在main中你创建一个新的配置实例而不是使用全局变量

你有:

var config map[string]*models.Config

哪个是全局变量。在main()中你有:

func main() {

config := models.Conf()
...

创建一个局部变量并抛弃它。这是你需要做的:

全局变量:

var config models.Config

主要:

func main() {

config = models.Conf()
...

这将引用全局变量而不是本地变量。