[Golang] 从零开始写Socket Server(4):将运行参数放入配置文件(XMLYAML)

[Golang] 从零开始写Socket Server(4):将运行参数放入配置文件(XMLYAML),第1张

概述    为了将我们写好的Server发布到服务器上,就要将我们的代码进行build打包,这样如果以后想要修改一些代码的话,需要重新给代码进行编译打包并上传到服务器上。     显然,这么做过于繁琐。。。因此常见的做法都是将Server运行中可能会频繁变更的变量、数值写入配置文件中,这样直接让程序从配置文件读取参数,避免对代码频繁的 *** 作。     关于配置文件的格式,在这里推荐YAML 和XML~ 为了将我们写好的Server发布到服务器上,就要将我们的代码进行build打包,这样如果以后想要修改一些代码的话,需要重新给代码进行编译打包并上传到服务器上。

显然,这么做过于繁琐。。。因此常见的做法都是将Server运行中可能会频繁变更的变量、数值写入配置文件中,这样直接让程序从配置文件读取参数,避免对代码频繁的 *** 作。

关于配置文件的格式,在这里推荐YAML 和XML~ XML是传统的配置文件写法,不过本人比较推荐yaml,他比XML要更加人性化,也更好写,关于yaml的详细信息可以参考:yaml官网

比如我们可以将Server监听的端口作为变量,写入配置文件 config.yaml 和 config.xml,放入代码的根目录下,这样当我们想要更换服务器端口的时候,只要在配置文件中修改port对应的值就可以拉。 config.xml内容如下:


<?xml version="1.0" enCoding="UTF-8"?><Config1>GetConfig</Config1><Config2>THE</Config2><Config3>information</Config3><Feature1>HereIsTEST1</Feature1><Feature2>1024</Feature2><Feature3>Feature23333</Feature3>

config.yaml内容如下:


Address: 172.168.0.1Config1: EasyConfig2:  Feature1: 2  Feature2: [3,4]Port: :6060Config4: ISConfig5: ATest



接下来就是解析他们了,目前golang官方还没有解析yaml的库,因此我推荐使用第三方的go-yaml包,

地址如下: go-yaml ,go get安装该包后,我们就可以通过他解析文件啦:


//解析文件,取出所有参数func GetYamlConfig() map[interface{}]interface{}{	data,err := IoUtil.Readfile("config.yaml")	//将解析出的参数转为map的形式	m := make(map[interface{}]interface{})	if err != nil {		LogErr("error: %v",err)	}	err = yaml.Unmarshal([]byte(data),&m)	return m}//根据需求取出对应值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<len(Keylst);count++{		map1[Keylst[count]]=Valuelst[count]	}	return map1}//取出map的函数跟yaml中的差不多,此处略过




运行效果如下:



总结

以上是内存溢出为你收集整理的[Golang] 从零开始写Socket Server(4):将运行参数放入配置文件(XML/YAML)全部内容,希望文章能够帮你解决[Golang] 从零开始写Socket Server(4):将运行参数放入配置文件(XML/YAML)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1287016.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存