亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

前言

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

viper使用

viper倉庫為

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

viper依賴安裝

使用以下命令安裝viper依賴

 go get github.com/spf13/viper

viper使用

(1)定義一個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")
    // 如果配置文件的名稱中沒有擴(kuò)展名,則需要配置此項(xiàng)
    viperConfig.SetConfigType("yml")
    // 配置文件名稱(無擴(kuò)展名)
    viperConfig.SetConfigName("app")
    if err := viperConfig.ReadInConfig(); err != nil {
       if _, ok := err.(viper.ConfigFileNotFoundError); ok {
          // 配置文件未找到錯誤;如果需要可以忽略
          log.Println("配置文件沒找到")
       } else {
          // 配置文件被找到,但產(chǎn)生了另外的錯誤
          log.Println("讀取文件異常:", err)
       }
    }
    var user User
    err := viperConfig.Unmarshal(&user)
    log.Println(user)
    log.Println("解析異常:", err)

}

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

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

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")
    // 如果配置文件的名稱中沒有擴(kuò)展名,則需要配置此項(xiàng)
    viperConfig.SetConfigType("yml")
    // 配置文件名稱(無擴(kuò)展名)
    viperConfig.SetConfigName("app")
    if err := viperConfig.ReadInConfig(); err != nil {
       if _, ok := err.(viper.ConfigFileNotFoundError); ok {
          // 配置文件未找到錯誤;如果需要可以忽略
          log.Println("配置文件沒找到")
       } else {
          // 配置文件被找到,但產(chǎn)生了另外的錯誤
          log.Println("讀取文件異常:", err)
       }
    }
    log.Println("值為:", viperConfig.Get("app.name"))
    log.Println("值為:", viperConfig.Get("app.config"))

}

輸出結(jié)果為

viper寫入文件

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

package main

import "github.com/spf13/viper"


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

}

總結(jié)

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

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

相關(guān)文章

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

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

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

    詳解golang RWMutex讀寫互斥鎖源碼分析

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

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

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

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

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

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

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

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

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

    Golang接口使用教程詳解

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

    Go語言做爬蟲狀態(tài)碼返回418的問題解決

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

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

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

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

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

最新評論