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

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

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

官網(wǎng)地址:

GitHub - spf13/viper: Go configuration with fangs

常用操作:

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

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

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

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子樹的所有設置
	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字段的所有設置

反序列化

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

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

相關文章

  • Go語言中不可不知的語法糖盤點

    Go語言中不可不知的語法糖盤點

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

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

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

    關于golang中平行賦值淺析

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

    如何使用Go語言獲取當天、昨天、明天、某天0點時間戳以及格式化時間

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

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

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

    Go基礎Slice教程詳解

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

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

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

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

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

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

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

    一文帶你了解GO語言中方法的應用

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

最新評論

宣化县| 玉山县| 湾仔区| 南昌市| 射洪县| 大城县| 平果县| 大邑县| 榆树市| 元氏县| 崇文区| 莱州市| 县级市| 泽普县| 乐业县| 黎城县| 兴义市| 巩义市| 洪泽县| 杭锦旗| 托里县| 宁津县| 通化县| 晋宁县| 远安县| 乳源| 黄梅县| 东阿县| 巴马| 木兰县| 温宿县| 合水县| 虹口区| 且末县| 周口市| 南溪县| 赤峰市| 沛县| 阿城市| 建德市| 曲水县|