欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

官網(wǎng)地址:

GitHub - spf13/viper: Go configuration with fangs

常用操作:

Viper會(huì)按照下面的優(yōu)先級(jí)。每個(gè)項(xiàng)目的優(yōu)先級(jí)都高于它下面的項(xiàng)目:

  • 顯示調(diào)用Set設(shè)置值
  • 命令行參數(shù)(flag)
  • 環(huán)境變量
  • 配置文件
  • key/value存儲(chǔ)
  • 默認(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)) // 處理錯(cuò)誤
	}

從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{}

通過(guò)傳入.分隔的路徑

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

提取子樹(shù)

// 提取子樹(shù)
	appConfig := viper.Sub("app")                       // 提取app子樹(shù)
	fmt.Println("App Config:", appConfig.AllSettings()) // 打印app子樹(shù)的所有設(shè)置
	cache1 := appConfig.GetStringMapString("cache1")    // 提取app子樹(shù)的cache1字段
	cache2 := viper.Sub("app.cache2")                   // 提取app子樹(shù)的cache2字段
	fmt.Println("Cache1:", cache1)                      // 打印app子樹(shù)的cache字段
	fmt.Println("Cache2:", cache2.AllSettings())        // 打印app子樹(shù)的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)) // 處理錯(cuò)誤
	}
	fmt.Println("Config Struct:", conf) // 打印反序列化后的結(jié)構(gòu)體

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

相關(guān)文章

  • 在golang中使用cel的用法詳解

    在golang中使用cel的用法詳解

    CEL?是一種非圖靈完備的表達(dá)式語(yǔ)言?,旨在快速、可移植且執(zhí)行安全,CEL?可以單獨(dú)使用,也可以嵌入到其他的產(chǎn)品中,本文將給大家介紹一下golang中如何使用cel,需要的朋友可以參考下
    2023-11-11
  • GO中什么情況會(huì)使用變量逃逸

    GO中什么情況會(huì)使用變量逃逸

    本文主要介紹了GO中什么情況會(huì)使用變量逃逸,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • Go語(yǔ)言中的變量聲明和賦值

    Go語(yǔ)言中的變量聲明和賦值

    這篇文章主要介紹了Go語(yǔ)言中的變量聲明和賦值的方法,十分的細(xì)致全面,有需要的小伙伴可以參考下。
    2015-04-04
  • Go事務(wù)中止時(shí)是否真的結(jié)束事務(wù)解析

    Go事務(wù)中止時(shí)是否真的結(jié)束事務(wù)解析

    這篇文章主要為大家介紹了Go事務(wù)中止時(shí)是否真的結(jié)束事務(wù)實(shí)例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • Go1.21新增cmp包的用法詳解

    Go1.21新增cmp包的用法詳解

    Go?1.21新增的?cmp?包提供了與比較有序值相關(guān)的類型和函數(shù),前幾篇文章講解的?slices?包中的函數(shù)有大量使用到?cmp?包中的函數(shù)和類型,下面我們就來(lái)看看cmp包的相關(guān)函數(shù)用法吧
    2023-08-08
  • Go語(yǔ)言實(shí)現(xiàn)常用排序算法的示例代碼

    Go語(yǔ)言實(shí)現(xiàn)常用排序算法的示例代碼

    排序算法是在生活中隨處可見(jiàn),也是算法基礎(chǔ),因?yàn)槠鋵?shí)現(xiàn)代碼較短,應(yīng)用較常見(jiàn)。所以在面試中經(jīng)常會(huì)問(wèn)到排序算法及其相關(guān)的問(wèn)題。本文為大家整理了一些Go語(yǔ)言中常用排序算法的實(shí)現(xiàn),需要的可以參考一下
    2022-08-08
  • golang并發(fā)編程使用Select語(yǔ)句的實(shí)現(xiàn)

    golang并發(fā)編程使用Select語(yǔ)句的實(shí)現(xiàn)

    Go語(yǔ)言中的select語(yǔ)句是并發(fā)編程中的重要工具,允許Goroutine等待多個(gè)通道操作,它阻塞直至任一case可執(zhí)行,可用于接收數(shù)據(jù)、實(shí)現(xiàn)超時(shí)機(jī)制和非阻塞通道操作,感興趣的可以了解一下
    2024-10-10
  • go 下載非標(biāo)準(zhǔn)庫(kù)包(部份包被墻了)到本地使用的方法

    go 下載非標(biāo)準(zhǔn)庫(kù)包(部份包被墻了)到本地使用的方法

    今天小編就為大家分享一篇go 下載非標(biāo)準(zhǔn)庫(kù)包(部份包被墻了)到本地使用的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-06-06
  • Go語(yǔ)言中的switch用法實(shí)例分析

    Go語(yǔ)言中的switch用法實(shí)例分析

    這篇文章主要介紹了Go語(yǔ)言中的switch用法,實(shí)例分析了switch的功能及使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-02-02
  • Golang中間件設(shè)計(jì)示例詳解

    Golang中間件設(shè)計(jì)示例詳解

    這篇文章主要介紹了Golang中間件設(shè)計(jì)示例,中間件是在HTTP請(qǐng)求處理過(guò)程中,對(duì)請(qǐng)求進(jìn)行處理的一種模式,中間件可以在請(qǐng)求到達(dá)處理器之前或之后對(duì)請(qǐng)求進(jìn)行攔截,修改或者增強(qiáng),同時(shí)可以對(duì)響應(yīng)進(jìn)行處理,需要的朋友可以參考下
    2023-05-05

最新評(píng)論