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

go使用Viper管理配置文件的方法步驟

 更新時(shí)間:2024年07月22日 08:38:00   作者:考慮考慮  
在項(xiàng)目開(kāi)發(fā)中,需要把一些配置配置提取出來(lái),方便配置和管理,可以使用Viper工具,Viper 是 Go 應(yīng)用程序的完整配置解決方案,也支持從環(huán)境變量中讀取,本文給大家介紹了go使用Viper管理配置文件的方法步驟,需要的朋友可以參考下

前言

在項(xiàng)目開(kāi)發(fā)中,需要把一些配置配置提取出來(lái),方便配置和管理,可以使用Viper工具,Viper 是 Go 應(yīng)用程序的完整配置解決方案,也支持從環(huán)境變量中讀取

viper使用

viper倉(cāng)庫(kù)為

 https://github.com/spf13/viper?tab=readme-ov-file

viper依賴安裝

使用以下命令安裝viper依賴

 go get github.com/spf13/viper

viper使用

(1)定義一個(gè)yaml配置文件,如

app:
  name: hello
  config: 1

放在config文件下

(2)程序讀取配置文件,使用程序

package main

import (
    "github.com/spf13/viper"
    "log"
)

type App struct {
    Name   string
    Config int64
}

type User struct {
    App App
}

func main() {
    viperConfig := viper.New()
    // 查找配置文件所在的路徑
    viperConfig.AddConfigPath("./config")
    // 如果配置文件的名稱(chēng)中沒(méi)有擴(kuò)展名,則需要配置此項(xiàng)
    viperConfig.SetConfigType("yml")
    // 配置文件名稱(chēng)(無(wú)擴(kuò)展名)
    viperConfig.SetConfigName("app")
    if err := viperConfig.ReadInConfig(); err != nil {
       if _, ok := err.(viper.ConfigFileNotFoundError); ok {
          // 配置文件未找到錯(cuò)誤;如果需要可以忽略
          log.Println("配置文件沒(méi)找到")
       } else {
          // 配置文件被找到,但產(chǎn)生了另外的錯(cuò)誤
          log.Println("讀取文件異常:", err)
       }
    }
    var user User
    err := viperConfig.Unmarshal(&user)
    log.Println(user)
    log.Println("解析異常:", err)

}

將配置文件轉(zhuǎn)為對(duì)象,輸出結(jié)果為

(3)也可以不將配置文件轉(zhuǎn)換成類(lèi),直接使用鍵值取值

package main

import (
    "github.com/spf13/viper"
    "log"
)

type App struct {
    Name   string
    Config int64
}

type User struct {
    App App
}

func main() {
    viperConfig := viper.New()
    // 查找配置文件所在的路徑
    viperConfig.AddConfigPath("./config")
    // 如果配置文件的名稱(chēng)中沒(méi)有擴(kuò)展名,則需要配置此項(xiàng)
    viperConfig.SetConfigType("yml")
    // 配置文件名稱(chēng)(無(wú)擴(kuò)展名)
    viperConfig.SetConfigName("app")
    if err := viperConfig.ReadInConfig(); err != nil {
       if _, ok := err.(viper.ConfigFileNotFoundError); ok {
          // 配置文件未找到錯(cuò)誤;如果需要可以忽略
          log.Println("配置文件沒(méi)找到")
       } else {
          // 配置文件被找到,但產(chǎn)生了另外的錯(cuò)誤
          log.Println("讀取文件異常:", err)
       }
    }
    log.Println("值為:", viperConfig.Get("app.name"))
    log.Println("值為:", viperConfig.Get("app.config"))

}

輸出結(jié)果為

viper寫(xiě)入文件

在開(kāi)發(fā)過(guò)程中,我們?nèi)绻胿iper寫(xiě)入文件,可以使用

package main

import "github.com/spf13/viper"


func main() {
    viper.Set("app.test", "aaa1")
    //viper.WriteConfig()
    viper.WriteConfigAs("./config/app.yaml")

}

總結(jié)

viper是一個(gè)強(qiáng)大的工具類(lèi)庫(kù),可以使用其管理項(xiàng)目中的配置文件,不過(guò)go也有其他配置文件,根據(jù)自己上手程序和熟練程度而定

以上就是go使用Viper管理配置文件的方法步驟的詳細(xì)內(nèi)容,更多關(guān)于go Viper管理配置文件的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Go 實(shí)現(xiàn)英尺和米的簡(jiǎn)單單位換算方式

    Go 實(shí)現(xiàn)英尺和米的簡(jiǎn)單單位換算方式

    這篇文章主要介紹了Go 實(shí)現(xiàn)英尺和米的簡(jiǎn)單單位換算方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-04-04
  • 詳解golang RWMutex讀寫(xiě)互斥鎖源碼分析

    詳解golang RWMutex讀寫(xiě)互斥鎖源碼分析

    這篇文章主要介紹了詳解golang RWMutex讀寫(xiě)互斥鎖源碼分析,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • Golang優(yōu)雅保持main函數(shù)不退出的辦法

    Golang優(yōu)雅保持main函數(shù)不退出的辦法

    很多時(shí)候我們需要讓main函數(shù)不退出,讓它在后臺(tái)一直執(zhí)行,下面這篇文章主要給大家介紹了關(guān)于Golang優(yōu)雅保持main函數(shù)不退出的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • golang并發(fā)編程中Goroutine 協(xié)程的實(shí)現(xiàn)

    golang并發(fā)編程中Goroutine 協(xié)程的實(shí)現(xiàn)

    Go語(yǔ)言中的協(xié)程是一種輕量級(jí)線程,通過(guò)在函數(shù)前加go關(guān)鍵字來(lái)并發(fā)執(zhí)行,具有動(dòng)態(tài)棧、快速啟動(dòng)和低內(nèi)存使用等特點(diǎn),本文就來(lái)詳細(xì)的介紹一下,感興趣的可以了解一下
    2024-10-10
  • Go語(yǔ)言中轉(zhuǎn)換JSON數(shù)據(jù)簡(jiǎn)單例子

    Go語(yǔ)言中轉(zhuǎn)換JSON數(shù)據(jù)簡(jiǎn)單例子

    這篇文章主要介紹了Go語(yǔ)言中轉(zhuǎn)換JSON數(shù)據(jù)簡(jiǎn)單例子,本文先定義了一個(gè)結(jié)構(gòu)體,然后把JSON綁定到結(jié)構(gòu)體上實(shí)現(xiàn)讀取,需要的朋友可以參考下
    2014-10-10
  • Go語(yǔ)言fmt.Sprintf格式化輸出的語(yǔ)法與實(shí)例

    Go語(yǔ)言fmt.Sprintf格式化輸出的語(yǔ)法與實(shí)例

    Go 可以使用 fmt.Sprintf 來(lái)格式化字符串,下面這篇文章主要給大家介紹了關(guān)于Go語(yǔ)言fmt.Sprintf格式化輸出的語(yǔ)法與實(shí)例,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • Golang接口使用教程詳解

    Golang接口使用教程詳解

    在?Go?語(yǔ)言中接口包含兩種含義:它既是方法的集合,?同時(shí)還是一種類(lèi)型并且在Go?語(yǔ)言中是隱式實(shí)現(xiàn)的。本文通過(guò)示例詳細(xì)介紹了Golang接口的使用,需要的可以參考一下
    2022-09-09
  • Go語(yǔ)言做爬蟲(chóng)狀態(tài)碼返回418的問(wèn)題解決

    Go語(yǔ)言做爬蟲(chóng)狀態(tài)碼返回418的問(wèn)題解決

    在使用Go語(yǔ)言做爬蟲(chóng)時(shí),使用http.Get(url)去獲取網(wǎng)頁(yè)內(nèi)容,狀態(tài)碼返回404,本文我們就詳細(xì)的介紹一下解決方法,感興趣的可以了解一下
    2021-12-12
  • Go并發(fā)原語(yǔ)之SingleFlight請(qǐng)求合并方法實(shí)例

    Go并發(fā)原語(yǔ)之SingleFlight請(qǐng)求合并方法實(shí)例

    本文我們來(lái)學(xué)習(xí)一下 Go 語(yǔ)言的擴(kuò)展并發(fā)原語(yǔ):SingleFlight,SingleFlight 的作用是將并發(fā)請(qǐng)求合并成一個(gè)請(qǐng)求,以減少重復(fù)的進(jìn)程來(lái)優(yōu)化 Go 代碼
    2023-12-12
  • go語(yǔ)言異常panic和恢復(fù)recover用法實(shí)例

    go語(yǔ)言異常panic和恢復(fù)recover用法實(shí)例

    這篇文章主要介紹了go語(yǔ)言異常panic和恢復(fù)recover用法,實(shí)例分析了異常panic和恢復(fù)recover使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-03-03

最新評(píng)論