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

golang讀取yaml配置文件的示例代碼

 更新時間:2023年11月20日 09:24:05   作者:考慮考慮  
在項目開發(fā)中,經(jīng)常需要把一些配置文件常量提取到統(tǒng)一配置文件進(jìn)行維護(hù),go項目在開發(fā)中常常把需要維護(hù)的常量或者配置提取到y(tǒng)aml文件,所以本文主要來為大家介紹一下golang如何讀取yaml配置文件吧

前言

在項目開發(fā)中,經(jīng)常需要把一些配置文件常量提取到統(tǒng)一配置文件進(jìn)行維護(hù),因為這樣對于改變量以及維護(hù)非常方便,對于Java的Sringboot項目,有applocation.properties或者yml或者yaml等文件,go項目開發(fā)中,可以把需要維護(hù)的常量或者配置提取到y(tǒng)aml文件,因為YAML 的語法和其他高級語言類似,并且可以簡單表達(dá)清單、散列表,標(biāo)量等數(shù)據(jù)形態(tài),對于項目修改配置非常方便

go安裝yaml組件

使用以下命令安裝依賴包

 go get gopkg.in/yaml.v3

yaml使用

在項目中創(chuàng)建test.yaml配置文件

 配置文件內(nèi)容如下

hello:
  name: 127.0.0.1
  age: 3306

redis:
  host: 127.0.0.1
  port: 6379
  password: 123456

讀取yaml內(nèi)容

使用程序讀取yaml配置文件內(nèi)容,內(nèi)容如下:

package main

import (
	"fmt"
	"gopkg.in/yaml.v3"
	"os"
)

type Config struct {
	Hello `yaml:"hello"`
	Redis `yaml:"redis"`
}

type Hello struct {
	Name string `yaml:"name"`
	Age  int    `yaml:"age"`
}

type Redis struct {
	Host     string `yaml:"host"`
	Port     int    `yaml:"port"`
	Password string `yaml:"password"`
}

func main() {
	dataBytes, err := os.ReadFile("test.yaml")
	if err != nil {
		fmt.Println("讀取文件失?。?, err)
		return
	}
	fmt.Println("yaml 文件的內(nèi)容:\n", string(dataBytes))
	config := Config{}
	err = yaml.Unmarshal(dataBytes, &config)
	if err != nil {
		fmt.Println("解析 yaml 文件失敗:", err)
		return
	}
	fmt.Printf("config內(nèi)容為:\n", config)

	mp := make(map[string]any, 2)
	err = yaml.Unmarshal(dataBytes, mp)
	if err != nil {
		fmt.Println("解析 yaml 文件失?。?, err)
		return
	}
	fmt.Println("內(nèi)容為:", mp)

}

結(jié)果為:

使用yaml可以指定對應(yīng)配置文件名稱

go創(chuàng)建yaml文件

go也可以通過程序生成yaml文件,程序如下

package main

import (
	"fmt"
	"gopkg.in/yaml.v3"
	"os"
)

type Config struct {
	Hello `yaml:"hello"`
	Redis Redis `yaml:"redis"`
}

type Hello struct {
	Name string `yaml:"name"`
	Age  int    `yaml:"age"`
}

type Redis struct {
	Host     string `yaml:"host"`
	Port     int    `yaml:"port"`
	Password string `yaml:"password"`
}

func main() {
	var data = Config{
		Hello: Hello{
			Name: "aaa",
			Age:  12,
		},
		Redis: Redis{
			Host:     "127.0.0.1",
			Port:     6379,
			Password: "121321",
		},
	}
	file, err := os.Create("./1.yaml")
	defer func(file *os.File) {
		err := file.Close()
		if err != nil {

		}
	}(file)
	if err != nil {
		fmt.Println("創(chuàng)建文件失敗:", err)
		return
	}
	// 創(chuàng)建編碼器
	encoder := yaml.NewEncoder(file)
	err = encoder.Encode(&data)
	if err != nil {
		fmt.Println("Error encoding YAML:", err)
		return
	}
	fmt.Println("創(chuàng)建成功")
}

總結(jié)

gopkg.in/yaml.v3 是一個功能強(qiáng)大的 Go 庫,用于解析和生成 YAML 數(shù)據(jù),在開發(fā)中,可以將配置提取到y(tǒng)aml配置文件中,易于程序維護(hù),可以提高開發(fā)效率,但是程序技術(shù)很多,每個人開發(fā)習(xí)慣不同,在開發(fā)中,根據(jù)個人喜好開發(fā)

到此這篇關(guān)于golang讀取yaml配置文件的示例代碼的文章就介紹到這了,更多相關(guān)go讀取yaml配置文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Swaggo零基礎(chǔ)入門教程

    Swaggo零基礎(chǔ)入門教程

    swagger是一套基于OpenAPI規(guī)范構(gòu)建的開源工具,使用RestApi。swagger-ui呈現(xiàn)出來的是一份可交互式的API文檔,可以直接在文檔頁面嘗試API的調(diào)用
    2023-01-01
  • 解決Go中攔截HTTP流數(shù)據(jù)時字段丟失的問題

    解決Go中攔截HTTP流數(shù)據(jù)時字段丟失的問題

    在開發(fā)高并發(fā)的Web應(yīng)用時,尤其是在處理HTTP代理和流數(shù)據(jù)攔截的場景下,遇到數(shù)據(jù)丟失的問題并不罕見,最近,在一個項目中,我遇到了一個棘手的問題:在攔截并轉(zhuǎn)發(fā)HTTP流數(shù)據(jù)的過程中,某些數(shù)據(jù)字段因為處理過快而被丟失,所以本文給大家介紹如何解決這個問題
    2024-08-08
  • gin使用自定義結(jié)構(gòu)綁定表單數(shù)據(jù)的示例代碼

    gin使用自定義結(jié)構(gòu)綁定表單數(shù)據(jù)的示例代碼

    這篇文章主要介紹了gin使用自定義結(jié)構(gòu)綁定表單數(shù)據(jù)的示例代碼,代碼簡單易懂,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • idea搭建go環(huán)境實現(xiàn)go語言開發(fā)

    idea搭建go環(huán)境實現(xiàn)go語言開發(fā)

    這篇文章主要給大家介紹了關(guān)于idea搭建go環(huán)境實現(xiàn)go語言開發(fā)的相關(guān)資料,文中通過圖文介紹以及代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用go具有一定的參考借鑒價值,需要的朋友可以參考下
    2024-01-01
  • Golang設(shè)計模式之外觀模式的實現(xiàn)

    Golang設(shè)計模式之外觀模式的實現(xiàn)

    這篇文章主要介紹了Golang設(shè)計模式之外觀模式的實現(xiàn),外觀模式是一種常用的設(shè)計模式之一,是一種結(jié)構(gòu)型設(shè)計模式,它提供了一個簡單的接口來訪問復(fù)雜系統(tǒng)的各種功能,從而降低了系統(tǒng)的復(fù)雜度,需要詳細(xì)了解可以參考下文
    2023-05-05
  • golang復(fù)制文件夾移動到另一個文件夾實現(xiàn)方法詳解

    golang復(fù)制文件夾移動到另一個文件夾實現(xiàn)方法詳解

    這篇文章主要為大家介紹了golang復(fù)制文件夾并移動到另一個文件夾實現(xiàn)方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • 簡單對比一下?C語言?與?Go語言

    簡單對比一下?C語言?與?Go語言

    這篇文章主要介紹了簡單對比一下?C語言?與?Go語言的相關(guān)資料,需要的朋友可以參考下
    2023-08-08
  • 淺析Golang中字符串拼接問題

    淺析Golang中字符串拼接問題

    Go的字符串是一個不可改變的數(shù)據(jù)結(jié)構(gòu),這和其他語言如JAVA,C++等的設(shè)定很類似.總體來說,有如下五種拼接方式,下面我們將論述各種方式的性能問題,以及如何選擇
    2023-04-04
  • 關(guān)于go語言載入json可能遇到的一個坑

    關(guān)于go語言載入json可能遇到的一個坑

    Go 語言從新手到大神,每個人多少都會踩一些坑,那么下面這篇文章主要給大家介紹了關(guān)于go語言載入json可能遇到的一個坑,文中通過示例代碼介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。
    2017-07-07
  • Go語言 channel如何實現(xiàn)歸并排序中的merge函數(shù)詳解

    Go語言 channel如何實現(xiàn)歸并排序中的merge函數(shù)詳解

    這篇文章主要給大家介紹了關(guān)于Go語言 channel如何實現(xiàn)歸并排序中merge函數(shù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-02-02

最新評論