最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

go配置管理框架viper常用操作

 更新時間:2025年04月27日 08:56:39   作者:Wenhao.  
這篇文章主要介紹了go配置管理框架viper常用操作,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧

官網(wǎng)地址:

GitHub - spf13/viper: Go configuration with fangs

常用操作:

Viper會按照下面的優(yōu)先級。每個項目的優(yōu)先級都高于它下面的項目:

  • 顯示調(diào)用Set設(shè)置值
  • 命令行參數(shù)(flag)
  • 環(huán)境變量
  • 配置文件
  • key/value存儲
  • 默認(rèn)值

配置文件 config.yaml(當(dāng)前目錄下)

host: "0.0.0.0"
mysql:
  host: "127.0.0.1"
  port: 3306
cache:
  cache1:
    max-items: 100
    item-size: 64
  cache2:
    max-items: 200
    item-size: 80

配置

viper.SetDefault("redis.port", "localhost:6379")
	// viper.SetConfigFile("./config.yaml") // 配置文件路徑,此行和下面兩行效果相同
	viper.SetConfigName("config") // 配置文件名
	viper.SetConfigType("yaml")   // 配置文件類型
	viper.AddConfigPath("./")     // 配置文件路徑
	err := viper.ReadInConfig()   // 查找并讀取配置文件
	if err != nil {
		panic(fmt.Errorf("fatal error config file: %w", err)) // 處理錯誤
	}

從Viper獲取值

在Viper中,有幾種方法可以根據(jù)值的類型獲取值。存在以下功能和方法:

  • Get(key string) : interface{}
  • GetBool(key string) : bool
  • GetFloat64(key string) : float64
  • GetInt(key string) : int
  • GetIntSlice(key string) : []int
  • GetString(key string) : string
  • GetStringMap(key string) : map[string]interface{}
  • GetStringMapString(key string) : map[string]string
  • GetStringSlice(key string) : []string
  • GetTime(key string) : time.Time
  • GetDuration(key string) : time.Duration
  • IsSet(key string) : bool
  • AllSettings() : map[string]interface{}

通過傳入.分隔的路徑

// Viper可以通過傳入.分隔的路徑來訪問嵌套字段:
	mysqlHost := viper.GetString("mysql.host") // 訪問mysql的host字段
	fmt.Println("Mysql Host:", mysqlHost)
	mysqlPort := viper.GetInt("mysql.port") // 訪問mysql的port字段
	fmt.Println("Mysql Port:", mysqlPort)

提取子樹

// 提取子樹
	appConfig := viper.Sub("app")                       // 提取app子樹
	fmt.Println("App Config:", appConfig.AllSettings()) // 打印app子樹的所有設(shè)置
	cache1 := appConfig.GetStringMapString("cache1")    // 提取app子樹的cache1字段
	cache2 := viper.Sub("app.cache2")                   // 提取app子樹的cache2字段
	fmt.Println("Cache1:", cache1)                      // 打印app子樹的cache字段
	fmt.Println("Cache2:", cache2.AllSettings())        // 打印app子樹的cache2字段的所有設(shè)置

反序列化

// 反序列化
	var conf Config
	err = viper.Unmarshal(&conf) // 反序列化到結(jié)構(gòu)體
	if err != nil {
		panic(fmt.Errorf("unable to decode into struct, %v", err)) // 處理錯誤
	}
	fmt.Println("Config Struct:", conf) // 打印反序列化后的結(jié)構(gòu)體

到此這篇關(guān)于go配置管理框架viper的文章就介紹到這了,更多相關(guān)go配置管理viper內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Go語言中不可不知的語法糖盤點(diǎn)

    Go語言中不可不知的語法糖盤點(diǎn)

    Go?語言有一些非常實(shí)用的語法糖(syntactic?sugar),它們使得代碼更加簡潔和易讀,本文為大家整理了15個常見的語法糖,有需要的可以了解下
    2025-01-01
  • 深入探討Golang中如何進(jìn)行并發(fā)發(fā)送HTTP請求

    深入探討Golang中如何進(jìn)行并發(fā)發(fā)送HTTP請求

    在?Golang?領(lǐng)域,并發(fā)發(fā)送?HTTP?請求是優(yōu)化?Web?應(yīng)用程序的一項重要技能,本文探討了實(shí)現(xiàn)此目的的各種方法,文中的示例代碼講解詳細(xì),希望對大家有所幫助
    2024-01-01
  • 關(guān)于golang中平行賦值淺析

    關(guān)于golang中平行賦值淺析

    這篇文章主要給大家介紹了關(guān)于golang中平行賦值的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用golang具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-08-08
  • 如何使用Go語言獲取當(dāng)天、昨天、明天、某天0點(diǎn)時間戳以及格式化時間

    如何使用Go語言獲取當(dāng)天、昨天、明天、某天0點(diǎn)時間戳以及格式化時間

    這篇文章主要給大家介紹了關(guān)于如何使用Go語言獲取當(dāng)天、昨天、明天、某天0點(diǎn)時間戳以及格式化時間的相關(guān)資料,格式化時間戳是將時間戳轉(zhuǎn)換為特定的日期和時間格式,文中通過代碼示例介紹的非常詳細(xì),需要的朋友可以參考下
    2023-10-10
  • Go?modules?replace解決Go依賴引用問題

    Go?modules?replace解決Go依賴引用問題

    這篇文章主要為大家介紹了Go?modules?replace解決Go依賴引用問題,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • Go基礎(chǔ)Slice教程詳解

    Go基礎(chǔ)Slice教程詳解

    這篇文章主要介紹了Go基礎(chǔ)Slice教程詳解,需要的朋友可以參考下
    2018-02-02
  • gin+gorm實(shí)現(xiàn)goweb項目的示例代碼

    gin+gorm實(shí)現(xiàn)goweb項目的示例代碼

    Gorm是Go語言的ORM框架,提供一套對數(shù)據(jù)庫進(jìn)行增刪改查的接口,本文主要介紹了gin+gorm實(shí)現(xiàn)goweb項目的示例代碼,具有一定的參考價值,感興趣的可以了解一下
    2025-03-03
  • Golang開發(fā)之接口的具體使用詳解

    Golang開發(fā)之接口的具體使用詳解

    在 Golang 中,接口是一種類型,它是由一組方法簽名組成的抽象集合。這篇文章主要為大家介紹了Golang接口的具體使用,希望對大家有所幫助
    2023-04-04
  • Go語言同步與異步執(zhí)行多個任務(wù)封裝詳解(Runner和RunnerAsync)

    Go語言同步與異步執(zhí)行多個任務(wù)封裝詳解(Runner和RunnerAsync)

    這篇文章主要給大家介紹了關(guān)于Go語言同步與異步執(zhí)行多個任務(wù)封裝(Runner和RunnerAsync)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-01-01
  • 一文帶你了解GO語言中方法的應(yīng)用

    一文帶你了解GO語言中方法的應(yīng)用

    GO?語言中的方法實(shí)際上和函數(shù)是類似的,只不過在函數(shù)的基礎(chǔ)上多了一個參數(shù),這篇文章主要為大家介紹一下GO語言中方法的應(yīng)用,需要的可以參考下
    2023-09-09

最新評論

都兰县| 榆社县| 富宁县| 龙陵县| 永安市| 新沂市| 喀喇沁旗| 开封市| 视频| 个旧市| 洛阳市| 乌兰浩特市| 龙口市| 姚安县| 资中县| 郓城县| 武陟县| 沙雅县| 神农架林区| 郧西县| 柏乡县| 博白县| 宜丰县| 襄城县| 兴和县| 嵩明县| 普安县| 邹平县| 梅河口市| 英山县| 东莞市| 甘孜| 茶陵县| 阳信县| 正阳县| 库伦旗| 泰顺县| 平遥县| 美姑县| 铅山县| 连城县|