gpt4 book ai didi

go - Viper,无法获取函数外初始化的值

转载 作者:数据小太阳 更新时间:2023-10-29 03:24:13 27 4
gpt4 key购买 nike

我在使用 viper 时遇到问题,我已经通过 viper 方法分配了变量,所以当我尝试在任何函数中获取值时,我得到的是空值。有谁知道为什么会这样?任何其他变量初始化工作正常,但 viper GetString 方法不行。

结构:主.go

    package main

import (
"project/Model"
"github.com/spf13/viper"
...
)

func main() {
//Config handling
viper.SetConfigName("main")
viper.AddConfigPath("/config/")
err = viper.ReadInConfig()
...
}

封装模型

    package Model

import ("github.com/spf13/viper"
...
)

var sqlhost = viper.GetString("db.host")

func foo() {
log.Println(sqlhost)
}

最佳答案

我怀疑像您展示的那样进行包变量初始化会导致 viper 配置在执行 GetString() 之前不完整,因此返回零(空)字符串值。没有看到你如何初始化你的 viper 配置,我猜它不在 init() 函数中,而是在一个尚未运行的 main() 函数中但是当包变量被赋值时。

您可能应该在需要它的最高级别函数中检索 viper.GetString("db.host") 而不是在包初始化期间。

关于go - Viper,无法获取函数外初始化的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46558252/

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