日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

go 写入yaml_[Golang] 从零开始写Socket Server(4):将运行参数放入配置文件(XML/YAML)...

發(fā)布時間:2024/7/23 asp.net 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 go 写入yaml_[Golang] 从零开始写Socket Server(4):将运行参数放入配置文件(XML/YAML)... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

為了將我們寫好的Server發(fā)布到服務器上,就要將我們的代碼進行build打包,這樣如果以后想要修改一些代碼的話,需要重新給代碼進行編譯打包并上傳到服務器上。

顯然,這么做過于繁瑣。。。因此常見的做法都是將Server運行中可能會頻繁變更的變量、數(shù)值寫入配置文件中,這樣直接讓程序從配置文件讀取參數(shù),避免對代碼頻繁的操作。

關于配置文件的格式,在這里推薦YAML 和XML~ XML是傳統(tǒng)的配置文件寫法,不過本人比較推薦yaml,他比XML要更加人性化,也更好寫,關于yaml的詳細信息可以參考:?yaml官網(wǎng)

比如我們可以將Server監(jiān)聽的端口作為變量,寫入配置文件 config.yaml 和 config.xml,放入代碼的根目錄下,這樣當我們想要更換服務器端口的時候,只要在配置文件中修改port對應的值就可以拉。 config.xml內容如下:

GetConfig

THE

Information

HereIsTEST1

1024

Feature23333

config.yaml內容如下:

Address: 172.168.0.1

Config1: Easy

Config2:

Feature1: 2

Feature2: [3, 4]

Port: :6060

Config4: IS

Config5: ATest接下來就是解析他們了,目前golang官方還沒有解析yaml的庫,因此我推薦使用第三方的go-yaml包,

地址如下: ?go-yaml? ,go get安裝該包后,我們就可以通過他解析文件啦:

//解析文件,取出所有參數(shù)

func GetYamlConfig() map[interface{}]interface{}{

data, err := ioutil.ReadFile("config.yaml")

//將解析出的參數(shù)轉為map的形式

m := make(map[interface{}]interface{})

if err != nil {

LogErr("error: %v", err)

}

err = yaml.Unmarshal([]byte(data), &m)

return m

}

//根據(jù)需求取出對應值

func GetElement(key string,themap map[interface{}]interface{})string {

if value,ok:=themap[key];ok {

return value.(string)

}

LogErr("Can't find the *.yaml")

return ""

}

這里同樣給出解析xml配置文件的代碼:

func GetXMLConfig() map[string]string {

var t xml.Token

var err error

Keylst := make([]string,6)

Valuelst:=make([]string,6)

//將解析出的元素填入map中,便于查找

map1:=make(map[string]string)

content, err := ioutil.ReadFile("config.xml")

CheckError(err)

decoder := xml.NewDecoder(bytes.NewBuffer(content))

i:=0

j:=0

for t, err = decoder.Token(); err == nil; t, err = decoder.Token() {

switch token := t.(type) {

// 處理元素

case xml.StartElement:

name := token.Name.Local

Keylst[i]=string(name)

i=i+1

case xml.CharData:

content1 := string([]byte(token))

//Valuelst=append(Valuelst,content1)

Valuelst[j]=content1

j=j+1

}

}

for count:=0;count

map1[Keylst[count]]=Valuelst[count]

}

return map1

}

//取出map的函數(shù)跟yaml中的差不多,此處略過

運行效果如下:

版權聲明:本文為博主原創(chuàng)文章,未經(jīng)博主允許不得轉載。

有疑問加站長微信聯(lián)系(非本文作者)

總結

以上是生活随笔為你收集整理的go 写入yaml_[Golang] 从零开始写Socket Server(4):将运行参数放入配置文件(XML/YAML)...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。