最新go配置解析库 - viper_go viper mergeinconfig(1),腾讯+华为+阿里面试真题分享

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

绑定pflag集合

ConfigFileUsed

func ConfigFileUsed() string

返回正在使用的配置文件,例如:

D:\workspace\myOpenSource\go-example\viper\ini\config.ini

Debug

func Debug()

打印调试信息,会根据viper查找顺序打印配置信息。例如:

Aliases:
map[string]string{}
Override:
map[string]interface {}{}
PFlags:
map[string]viper.FlagValue{}
Env:
map[string][]string{}
Key/Value Store:
map[string]interface {}{}
Config:
map[string]interface {}{"mysql.database":"awesome", "mysql.ip":"127.0.0.1", "mysql.password":"123456", "mysql.port":"3306", "mysql.user":"dj", "redis.ip":"127.0.0.1", "redis.port":"7381"}
Defaults:
map[string]interface {}{}

Get

获取指定key值信息

func Get(key string) interface{}
func GetBool(key string) bool
func GetDuration(key string) time.Duration
func GetFloat64(key string) float64
func GetInt(key string) int
func GetInt32(key string) int32
func GetInt64(key string) int64
func GetIntSlice(key string) []int
func GetSizeInBytes(key string) uint
func GetString(key string) string
func GetStringMap(key string) map[string]interface{}
func GetStringMapString(key string) map[string]string
func GetStringMapStringSlice(key string) map[string][]string
func GetStringSlice(key string) []string
func GetTime(key string) time.Time
func GetUint(key string) uint
func GetUint32(key string) uint32
func GetUint64(key string) uint64

InConfig

func InConfig(key string) bool

判断这个键是否存在。

fmt.Println(viper.InConfig("mysql"))    //false
fmt.Println(viper.InConfig("ip"))       //false
fmt.Println(viper.InConfig("mysql.ip")) //true

InSet

func IsSet(key string) bool

判断键是否是个集合

MergeConfig

func MergeConfig(in io.Reader) error
func MergeConfigMap(cfg map[string]interface{}) error
func MergeInConfig() error

会将新的配置和原有的配置合并

OnConfigChang

func OnConfigChange(run func(in fsnotify.Event))

设置配置改变时的回调函数

ReadConfig

func ReadConfig(in io.Reader) error

从IO接口中读取配置

ReadInConfig

func ReadInConfig() error

加载配置文件

ReadRemoteConfig

func ReadRemoteConfig() error

加载远程配置文件

RegisterAlias

func RegisterAlias(alias string, key string)

为key设置一个别名。

Reset

func Reset()

将存储的所有信息清空,仅用于测试

SafeWriteConfig

func SafeWriteConfig() error

仅当文件不存在时,将当前配置写入文件

SafeWriteConfigAs

func SafeWriteConfigAs(filename string) error

将当前配置写入给定文件名(如果它不存在)。

Set

func Set(key string, value interface{})

覆盖内存中的键的值,对键不区分大小写。将用于代替通过flag、配置文件、环境变量、默认值或键/值存储获得的值。

SetConfigFile

func SetConfigFile(in string)

明确定义配置文件的路径、名称和扩展名。Viper 将使用它而不检查任何配置路径。

SetConfigName

func SetConfigName(in string)

设置配置文件的名称。不包括扩展名。

SetConfigPermissions

func SetConfigPermissions(perm os.FileMode)

设置给定配置文件的权限

SetConfigType

func SetConfigType(in string)

设置配置文件的类型,如json、ini、toml

SetDefault

func SetDefault(key string, value interface{})

为指定的键设置默认值,对key不区分大小写,仅当用户没有通过flag、配置文件以及环境变量设置值时才使用默认值。

SetEnvKeyReplacer

func SetEnvKeyReplacer(r \*strings.Replacer)

允许你使用一个strings.Replacer对象来将配置名重写为Env名。如果你想在Get()中使用包含-的配置名 ,但希望对应的环境变量名包含_分隔符,就可以使用该方法。使用它的一个例子可以在项目中viper_test.go文件里找到。

func TestSetEnvKeyReplacer(t \*testing.T) {
	Reset()

	AutomaticEnv()

	testutil.Setenv(t, "REFRESH\_INTERVAL", "30s")

	replacer := strings.NewReplacer("-", "\_")
	SetEnvKeyReplacer(replacer)

	assert.Equal(t, "30s", Get("refresh-interval"))
}

SetEnvPrefix

func SetEnvPrefix(in string)

定义环境变量使用的前缀。

SetEnvPrefix("spf") // 将会自动转为大写
BindEnv("id")
 
os.Setenv("SPF\_ID", "13") // 通常通过系统环境变量来设置
 
id := Get("id") // 13

SetFs

func SetFs(fs afero.Fs)

设置文件系统。github.com/spf13/afero

SetTypeByDefaultValue

func SetTypeByDefaultValue(enable bool)

使用 Get 函数时基于键的默认值而不是基于正常获取逻辑返回的值启用或禁用键值类型的推断。
例如,如果一个键的默认值为 []string{},并且通过环境变量将相同的键设置为“ab c”,则调用 Get 函数将返回该键的字符串切片,如果该键的类型由默认值推断,Get 函数将返回:

[]string {"a", "b", "c"}

否则返回

"a b c"

Unmarshal

func Unmarshal(rawVal interface{}, opts ...DecoderConfigOption) error

将配置解组到 Struct。确保正确设置结构字段上的标签。

UnmarshalExact

func UnmarshalExact(rawVal interface{}, opts ...DecoderConfigOption) error

UnmarshalExact 将配置解组为 Struct,如果目标结构中不存在字段,则会出错。

UnmarshalKey

func UnmarshalKey(key string, rawVal interface{}, opts ...DecoderConfigOption) error

UnmarshalKey 采用单个键并将其解组为 Struct。

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

ey(key string, rawVal interface{}, opts …DecoderConfigOption) error


UnmarshalKey 采用单个键并将其解组为 Struct。


[外链图片转存中...(img-758UkUJJ-1715571882211)]
[外链图片转存中...(img-VH4ZlpSR-1715571882212)]

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化的资料的朋友,可以添加戳这里获取](https://bbs.csdn.net/topics/618658159)**


**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

  • 9
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值