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

golang配置文件解析器之goconfig框架的使用詳解

 更新時間:2023年11月21日 15:26:03   作者:shura1014  
goconfig是一個易于使用,支持注釋的 Go 語言配置文件解析器,該文件的書寫格式和 Windows 下的 INI 文件一樣,本文主要為大家介紹了goconfig框架的具體使用,需要的可以參考下

每個項目中都會有配置文件管理來管理,比如數(shù)據(jù)庫的配置。

配置文件框架 一般大致思路都是加載配置文件,返回配置操作對象,該對象提供獲取配置api

下面我們來使用goconfig框架來了解配置框架,它解析的是ini文件,ini文件以簡單的文字和結(jié)構組成,一般windows系統(tǒng)比較常見,很多應用程序也會因為其簡單而使用其作為配置文件

官網(wǎng)star目前599

安裝

go get github.com/Unknwon/goconfig

配置示例

在項目下建立一個文件 conf/conf_goconfig.ini 內(nèi)容如下

[mysql]
host = 127.0.0.1
port = 3306
; 用戶名
user = root
# 密碼
password = root
db_name : blog
max_idle : 2
max_conn : 10
[array]
course = java,go,python

配置文件由一個個的 section 組成,section 下就是key = value或者key : value 這樣的格式配置

如果沒有 section 會放到 DEFAULT 默認section里面

注釋使用 ;開頭或者#開頭

下面我們就來讀取配置

加載、獲取section、獲取單個值、獲取注釋、獲取數(shù)組、重新設置值、刪除值,重新加載文件(會寫一個for循環(huán)10次去重新加載配置,這期間修改配置,觀察值是否改變)

編寫go代碼

package main

import (
	"errors"
	"fmt"
	"github.com/Unknwon/goconfig"
	"log"
	"os"
	"time"
)

func main() {

	currentPath, _ := os.Getwd()
	confPath := currentPath + "/conf/conf_goconfig.ini"

	_, err := os.Stat(confPath)
	if err != nil {
		panic(errors.New(fmt.Sprintf("file is not found %s", confPath)))

	}

	// 加載配置
	config, err := goconfig.LoadConfigFile(confPath)
	if err != nil {
		log.Fatal("讀取配置文件出錯:", err)
	}

	// 獲取 section
	mysqlConf, _ := config.GetSection("mysql")
	fmt.Println(mysqlConf)
	fmt.Println(mysqlConf["host"])

	// 獲取單個值
	user, _ := config.GetValue("mysql", "user")
	fmt.Println(user)

	// 獲取單個值并且指定類型
	maxIdle, _ := config.Int("mysql", "max_idle")
	fmt.Println(maxIdle)

	// 獲取單個值,發(fā)生錯誤時返回默認值,沒有默認值返回零值
	port := config.MustInt("mysql", "port", 3308)
	fmt.Println(port)

	// 重新設置值
	config.SetValue("mysql", "port", "3307")
	port = config.MustInt("mysql", "port", 3308)
	fmt.Println(port)

	// 刪除值
	config.DeleteKey("mysql", "port")
	port = config.MustInt("mysql", "port", 3308)
	fmt.Println(port)

	// 獲取注釋
	comments := config.GetKeyComments("mysql", "user")
	fmt.Println(comments)

	// 獲取數(shù)組,需要指定分隔符
	array := config.MustValueArray("array", "course", ",")
	fmt.Println(array)

	// 重新加載配置文件,一般對于web項目,改了配置文件希望能夠即使生效而不需要重啟應用,可以對外提供刷新配置api
	// 修改password 為 root123值觀察值的變化
	for i := 0; i < 10; i++ {
		time.Sleep(time.Second * 3)
		_ = config.Reload()
		password, _ := config.GetValue("mysql", "password")
		fmt.Println(password)
	}
}

執(zhí)行

map[db_name:blog host:127.0.0.1 max_conn:10 max_idle:2 password:root port:3306 user:root]
127.0.0.1
root
2
3306
3307
3308
; 用戶名
[java go python]
root
root
root
root123
root123
root123
root123
root123
root123
root123

Process finished with the exit code 0

從結(jié)果中可以看出,正確獲取到了配置文件信息,并且可以通過 Reload重新加載配置,達到熱更新效果!

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

相關文章

  • 重學Go語言之數(shù)組的具體使用詳解

    重學Go語言之數(shù)組的具體使用詳解

    Go的數(shù)組是一種復合數(shù)據(jù)類型,在平時開發(fā)中并不常用,更常用的是切片(slice),可以把切片看作是能動態(tài)擴容的數(shù)組,切片的底層數(shù)據(jù)結(jié)構就是數(shù)組,所以數(shù)組雖不常用,但仍然有必要掌握
    2023-02-02
  • 使用Go+GoQuery庫實現(xiàn)頭條新聞采集

    使用Go+GoQuery庫實現(xiàn)頭條新聞采集

    在本文中,我們將介紹如何使用Go語言和GoQuery庫實現(xiàn)一個簡單的爬蟲程序,用于抓取頭條新聞的網(wǎng)頁內(nèi)容,我們還將使用爬蟲代理服務,提高爬蟲程序的性能和安全性,我們將使用多線程技術,提高采集效率,最后,我們將展示爬蟲程序的運行結(jié)果和代碼,需要的朋友可以參考下
    2023-10-10
  • Golang中的內(nèi)存泄漏你真的理解了嗎

    Golang中的內(nèi)存泄漏你真的理解了嗎

    內(nèi)存泄漏是編程中常見的問題,會對程序的性能和穩(wěn)定性產(chǎn)生嚴重影響,本文將深入詳解?Golang?中的內(nèi)存泄漏的原因、檢測方法以及避免方法,希望對大家有所幫助
    2023-12-12
  • go grpc安裝使用教程

    go grpc安裝使用教程

    gRPC是由Google主導開發(fā)的RPC框架,使用HTTP/2協(xié)議并用ProtoBuf作為序列化工具。這篇文章主要介紹了go grpc安裝使用教程,需要的朋友可以參考下
    2018-02-02
  • Go語言中的指針運算實例分析

    Go語言中的指針運算實例分析

    這篇文章主要介紹了Go語言中的指針運算技巧,實例分析了Go語言指針運算的實現(xiàn)方法,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-02-02
  • 使用Go HTTP客戶端打造高性能服務

    使用Go HTTP客戶端打造高性能服務

    大多數(shù)語言都有提供各自的 HTTP 客戶端,本文將動手實踐如何使用Go語言發(fā)起HTTP請求,并討論其中有可能遇到的問題。具有一定的參考價值,感興趣的可以了解一下
    2021-12-12
  • 簡單易用的Go逗號comma ok模式使用詳解

    簡單易用的Go逗號comma ok模式使用詳解

    這篇文章主要為大家介紹了簡單易用的Go逗號comma ok模式使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • go開發(fā)alertmanger實現(xiàn)釘釘報警

    go開發(fā)alertmanger實現(xiàn)釘釘報警

    本文主要介紹了go開發(fā)alertmanger實現(xiàn)釘釘報警,通過自己的url實現(xiàn)alertmanager的釘釘報警,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • Go語言使用ioutil.ReadAll函數(shù)需要注意基本說明

    Go語言使用ioutil.ReadAll函數(shù)需要注意基本說明

    這篇文章主要為大家介紹了Go語言使用ioutil.ReadAll函數(shù)需要注意基本說明,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • Golang字符串的拼接方法匯總

    Golang字符串的拼接方法匯總

    字符串拼接在日常開發(fā)中是很常見的需求,今天我們來探討下如何用golang來實現(xiàn)字符串的拼接
    2018-10-10

最新評論