教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 Golang——使用yaml配置文件

Golang——使用yaml配置文件

发布时间:2021-12-26   编辑:jiaochengji.com
教程集为您提供Golang——使用yaml配置文件等资源,欢迎您收藏本站,我们将为您提供最新的Golang——使用yaml配置文件资源
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"/></svg><h1 id="golang使用yaml配置文件">Golang——使用yaml配置文件</h1>

之前一直从事java开发,习惯了使用yaml文件的格式,尤其是清晰的层次结构、注释。抱着好奇心以及对golang的看好开始学习golang,逐渐喜欢上了这门语言,也尝试着在项目中使用golang,当然编程必定涉及到配置,go程序依然如此,自然而然首选yaml配置。

<h3 id="一安装依赖">一、安装依赖、</h3>

在选择之前也了解过各类yaml解析库,最终选择go-yaml包。地址:go-yaml

<pre class="prettyprint"><code class="language-go hljs "><span class="hljs-keyword">go</span> get gopkg.in/yaml.v2</code></pre> <h3 id="二configyaml">二、config.yaml</h3> <pre class="prettyprint"><code class="language-yaml hljs avrasm"><span class="hljs-label">channel:</span> <span class="hljs-preprocessor">#亿美-催还款账号信息</span> emayReminder: userId: abcd userPws: abcd url: http://bjmtn<span class="hljs-preprocessor">.b</span>2m<span class="hljs-preprocessor">.cn</span>:<span class="hljs-number">80</span>/inter/getBalance threshold: <span class="hljs-number">10000</span> <span class="hljs-preprocessor">#国都短信账号信息</span> guodu: userId: dddd userPws: sssss keyStr: dddddd url: http://<span class="hljs-number">221.179</span><span class="hljs-number">.180</span><span class="hljs-number">.158</span>:<span class="hljs-number">8081</span>/QxtSms_surplus/surplus threshold: <span class="hljs-number">10000</span> </code></pre> <h3 id="三读取配置文件channelconfiggo">三、读取配置文件ChannelConfig.go</h3>

读取yaml与读取json的方式,需要根据层级定义struct。

<pre class="prettyprint"><code class="language-Go hljs go"><span class="hljs-keyword">package</span> util <span class="hljs-keyword">import</span> ( <span class="hljs-string">"io/ioutil"</span> <span class="hljs-string">"log"</span> <span class="hljs-string">"gopkg.in/yaml.v2"</span> ) <span class="hljs-keyword">var</span> configFile []<span class="hljs-typename">byte</span> <span class="hljs-keyword">type</span> ChannelConfig <span class="hljs-keyword">struct</span> { Channel Channel <span class="hljs-string">`yaml:"channel"`</span> } <span class="hljs-keyword">type</span> Channel <span class="hljs-keyword">struct</span> { EmayReminderConfig EmayReminder <span class="hljs-string">`yaml:"emayReminder"`</span> GuoduConfig Guodu <span class="hljs-string">`yaml:"guodu"`</span> } <span class="hljs-keyword">type</span> EmayReminder <span class="hljs-keyword">struct</span> { UserId <span class="hljs-typename">string</span> <span class="hljs-string">`yaml:"userId"`</span> UserPws <span class="hljs-typename">string</span> <span class="hljs-string">`yaml:"userPws"`</span> Url <span class="hljs-typename">string</span> <span class="hljs-string">`yaml:"url"`</span> Threshold <span class="hljs-typename">string</span> <span class="hljs-string">`yaml:"threshold"`</span> } <span class="hljs-keyword">type</span> Guodu <span class="hljs-keyword">struct</span> { UserId <span class="hljs-typename">string</span> <span class="hljs-string">`yaml:"userId"`</span> UserPws <span class="hljs-typename">string</span> <span class="hljs-string">`yaml:"userPws"`</span> Url <span class="hljs-typename">string</span> <span class="hljs-string">`yaml:"url"`</span> KeyStr <span class="hljs-typename">string</span> <span class="hljs-string">`yaml:"keyStr"`</span> Threshold <span class="hljs-typename">string</span> <span class="hljs-string">`yaml:"threshold"`</span> } <span class="hljs-keyword">func</span> GetChannelConfig() (e *ChannelConfig, err error) { err = yaml.Unmarshal(configFile, &e) <span class="hljs-keyword">return</span> e, err } <span class="hljs-keyword">func</span> init() { <span class="hljs-keyword">var</span> err error; configFile, err = ioutil.ReadFile(<span class="hljs-string">"resource/config.yaml"</span>) <span class="hljs-keyword">if</span> err != <span class="hljs-constant">nil</span> { log.Fatalf(<span class="hljs-string">"yamlFile.Get err %v "</span>, err) } } </code></pre> <h3 id="四测试maingo">四、测试main.go</h3> <pre class="prettyprint"><code class=" hljs avrasm">package main import ( <span class="hljs-string">"github.com/KarenLKL/Balance/route"</span> <span class="hljs-string">"net/http"</span> <span class="hljs-string">"github.com/KarenLKL/Balance/util"</span> <span class="hljs-string">"log"</span> <span class="hljs-string">"fmt"</span> ) func main() { router := route<span class="hljs-preprocessor">.NewRouter</span>() config, err := util<span class="hljs-preprocessor">.GetChannelConfig</span>() if err != nil { log<span class="hljs-preprocessor">.Printf</span>(<span class="hljs-string">"get emayReminder channel config faild! err: #%v"</span>, err) } fmt<span class="hljs-preprocessor">.Println</span>(config) http<span class="hljs-preprocessor">.ListenAndServe</span>(<span class="hljs-string">":8888"</span>, router) } </code></pre> <blockquote>

用问题的地方,请您指正 ^_^

</blockquote> 到此这篇关于“Golang——使用yaml配置文件”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
Golang——使用yaml配置文件
php实现简单用户登录功能程序代码
linux下PostgreSQL的安装与使用
用于管理iptables的shell脚本一例
mysql导入导出数据时中文乱码的解决办法
php excel操作类phpExcel用法介绍
css中position相对定位和绝对定位(relative,absolute)详解
配置mysql主从复制的一点心得体会
MySQL中group_concat函数使用例子
golang整洁之道(一)

[关闭]
~ ~