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

golang使用viper解析配置文件的示例代碼

 更新時間:2024年08月22日 10:42:53   作者:windcontinuestoblow  
Viper是一個輕量級的、易于使用的配置工具庫,它允許你在Go應用中方便地管理配置,Viper支持從多種來源讀取配置,如環(huán)境變量、命令行參數(shù)、文件、甚至是加密的數(shù)據(jù)存儲,本文給大家介紹了golang使用viper解析配置文件,需要的朋友可以參考下

viper讀取配置文件

讀取配置這部分內容可以作為初始化內容寫在init函數(shù)中,后面直接調用viper相關接口即可。
yaml類型的配置文件在path目錄下,通過viper接口可以將配置文件加載到viper中,方便后續(xù)使用。

	//設置配置文件
	cfgFile="/path/conf/config.yaml"
	viper.SetConfigFile(cfgFile)
	//加載配置文件內容
	err = viper.ReadInConfig()
	if err != nil {
		slog.Error("ReadInConfig error")
	}

viper讀取基本數(shù)據(jù)類型內容

在config.yaml文件中填寫如下配置:

	#yaml配置文件內容
	logger:
	  level: DEBUG #log級別
	  max_size: 10 #log rotate文件大小配置,單位"MB"
	  compress: true #是否壓縮舊文件

可以在go代碼中定義logger結構體,用于統(tǒng)一管理logger節(jié)點下的配置。

	//定義結構體
	type LogConfig struct {
		MaxSize    int    `yaml:"max_size"`
		Compress   bool   `yaml:"compress"`
		Level      string `yaml:"level"`
		
	}

針對int,bool,string基本數(shù)據(jù)類型的配置,viper提供了對應的接口進行解析。

	//viper接口獲取int,bool,string等類型內容
	conf := &LogConfig{
	        MaxSize:    viper.GetInt("logger.max_size"),
	        Compress:   viper.GetBool("logger.compress"),
	        Level:      viper.GetString("logger.level"),
	}

除了上述幾個數(shù)據(jù)類型還包括viper.GetChan接口,基本上可以覆蓋大多數(shù)解析情況。

viper讀取map類型配置

如果希望在配置文件中填入map形式的數(shù)據(jù),這是viper沒有提供對應數(shù)據(jù)類型的接口,需要自定義解析方式。

config.yaml配置中內容:

	#yaml配置文件內容
	res:
	  enable_flag: false
	  res_list: {"001":"aa","002":"bb"}

采用viper.AllSettings()方法獲取全部配置,yaml數(shù)據(jù)以map形式存儲,逐步解析可以獲得res_list map類型數(shù)據(jù)。

	//通過viper獲取全部配置并解析
	resList := make(map[string]string)
	as := viper.AllSettings()
	res, ok := as["res"].(map[string]interface{})
	if !ok {
	    slog.Error("獲取res配置文件信息失敗")
	    return nil
	}
	res_list, ok := res["res_list"].(map[string]interface{})
	if !ok {
	    slog.Error("獲取res_list配置文件信息失敗")
	    return nil
	}
	for k, v := range res_list {
	    resList[k] = v.(string)
	}

到此這篇關于golang使用viper解析配置文件的示例代碼的文章就介紹到這了,更多相關golang viper解析配置文件內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • golang rate令牌桶源碼分析實現(xiàn)方式

    golang rate令牌桶源碼分析實現(xiàn)方式

    這篇文章主要介紹了golang rate令牌桶源碼分析實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • 詳解Go語言中用 os/exec 執(zhí)行命令的五種方法

    詳解Go語言中用 os/exec 執(zhí)行命令的五種方法

    這篇文章主要介紹了Go語言中用 os/exec 執(zhí)行命令的五種方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • Golang中異常處理機制詳解

    Golang中異常處理機制詳解

    這篇文章主要給大家介紹了關于Golang中異常處理機制的相關資料,其實Go語言的異常捕獲要比Python中簡單的多,它沒有Python中那么多復雜的異常類型及繼承體系,需要的朋友可以參考下
    2021-06-06
  • Go結構體的基本使用詳解

    Go結構體的基本使用詳解

    本文主要介紹了Go結構體的基本使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-02-02
  • Go中的nil切片和空切片區(qū)別詳解

    Go中的nil切片和空切片區(qū)別詳解

    這篇文章主要介紹了Go中的nil切片和空切片區(qū)別詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • 淺談Go語言的空標示符

    淺談Go語言的空標示符

    本文通過文字及實例介紹了Go語言的空標示符,對此有不明白的朋友可以參考學習,下面一起來看看吧。
    2016-08-08
  • Go語言中實現(xiàn)Unix風格的進程管道方法實例

    Go語言中實現(xiàn)Unix風格的進程管道方法實例

    這篇文章主要為大家介紹了Go語言中實現(xiàn)Unix風格的進程管道方法實例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-12-12
  • Golang中字符串(string)與字節(jié)數(shù)組([]byte)一行代碼互轉實例

    Golang中字符串(string)與字節(jié)數(shù)組([]byte)一行代碼互轉實例

    golang語言本身就是c的工具集,開發(fā)c的程序用到的大部分結構體,內存管理,攜程等,golang基本都有,下面這篇文章主要給大家介紹了關于Golang中字符串(string)與字節(jié)數(shù)組([]byte)一行代碼互轉的相關資料,需要的朋友可以參考下
    2022-09-09
  • Go語言類型轉換及問題探討

    Go語言類型轉換及問題探討

    本文探討了Go語言中的類型轉換機制,特別是在使用atomic.Pointer和unsafe時可能引發(fā)的問題,通過深入分析Go語言的類型轉換規(guī)則,如數(shù)值類型間轉換、字符串與byte/rune切片轉換、slice與數(shù)組轉換,以及底層類型相同時的轉換,文章最后給出了一些在Go中使用類型轉換的建議
    2024-10-10
  • golang默認Logger日志庫在項目中使用Zap日志庫

    golang默認Logger日志庫在項目中使用Zap日志庫

    這篇文章主要為大家介紹了golang默認Logger日志庫在項目中使用Zap日志庫,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪
    2022-04-04

最新評論