gpt4 book ai didi

go - 正确等待全局变量初始化

转载 作者:IT王子 更新时间:2023-10-29 02:25:13 25 4
gpt4 key购买 nike

我有一个全局变量,它读取我在不同函数中使用的配置文件。当我执行 main 方法,并尝试从配置中读取一个值时,该值还没有准备好,所以我得到一个奇怪的值 :ᾐ 应该是 8080。什么是正确的等待全局变量准备就绪的方法。

var conf = getGeneralConfig()

func main() {
router := mux.NewRouter()
fmt.Println(":" + string(conf.PORT))
router.HandleFunc("/add", add).Methods("POST")
// conf is not yet ready here
log.Fatal(http.ListenAndServe(":"+string(conf.PORT), router))
}

提前致谢。

最佳答案

Global variable initializers and package init() functions will always run before main() 。如果您的 getGeneralConfig 函数启动一个 goroutine,但您需要它在 main() 运行之前完成,要么 a) 不要使用 goroutine,要么 b) 使用 sync.WaitGroup以确保它在 getGeneralConfig 返回之前完成。

关于go - 正确等待全局变量初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50492794/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com