golang 运行-config指定配置文件
发布时间:2021-12-07 编辑:jiaochengji.com
教程集为您提供golang 运行-config指定配置文件等资源,欢迎您收藏本站,我们将为您提供最新的golang 运行-config指定配置文件资源
<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><h6>配置文件/home/amber/db.toml:</h6>
<pre><code class="lang-go hljs"># This is a TOML document<span class="token punctuation">.</span>
title <span class="token operator">=</span> <span class="token string">"TOML Example"</span>
<span class="token punctuation">[</span>database<span class="token punctuation">]</span>
server <span class="token operator">=</span> <span class="token string">"192.10.92.10"</span>
ports <span class="token operator">=</span> <span class="token punctuation">[</span> <span class="token number">5000</span><span class="token punctuation">,</span> <span class="token number">5001</span><span class="token punctuation">,</span> <span class="token number">5002</span> <span class="token punctuation">]</span>
connection_max <span class="token operator">=</span> <span class="token number">5000</span>
enabled <span class="token operator">=</span> <span class="token boolean">true</span> <span class="token comment">//bool类型</span>
</code></pre>
<h6>go文件(方式一)</h6>
<pre><code class="lang-go hljs"><span class="token keyword">package</span> main
<span class="token keyword">import</span> <span class="token string">"toml"</span>
<span class="token keyword">type</span> tomlConfig <span class="token keyword">struct</span> <span class="token punctuation">{</span>
Title <span class="token builtin">string</span>
DB database <span class="token string">`toml:"database"`</span>
<span class="token punctuation">}</span>
<span class="token keyword">type</span> database <span class="token keyword">struct</span> <span class="token punctuation">{</span>
Server <span class="token builtin">string</span> <span class="token string">`toml:"server"`</span>
Ports <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token builtin">int</span> <span class="token string">`toml:"ports"`</span>
ConnMax <span class="token builtin">int</span> <span class="token string">`toml:"connection_max"`</span>
Enabled <span class="token builtin">bool</span> <span class="token string">`toml:"enabled"`</span>
<span class="token punctuation">}</span>
<span class="token keyword">func</span> main <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token comment">// 通过toml.DecodeFile将配置文件所在路径和struct结合在一起</span>
<span class="token keyword">var</span> config tomlConfig
filePath <span class="token operator">:=</span> <span class="token string">"/home/amber/db.toml"</span>
<span class="token keyword">if</span> <span class="token boolean">_</span><span class="token punctuation">,</span> err <span class="token operator">:=</span> toml<span class="token punctuation">.</span><span class="token function">DecodeFile</span><span class="token punctuation">(</span>filePath<span class="token punctuation">,</span> <span class="token operator">&</span>config<span class="token punctuation">)</span><span class="token punctuation">;</span> err <span class="token operator">!=</span> <span class="token boolean">nil</span> <span class="token punctuation">{</span>
<span class="token function">panic</span><span class="token punctuation">(</span>err<span class="token punctuation">)</span>
<span class="token punctuation">}</span>
<span class="token keyword">if</span> config<span class="token punctuation">.</span>DB<span class="token punctuation">.</span>Enabled <span class="token punctuation">{</span>
fmt<span class="token punctuation">.</span><span class="token function">Sprintf</span><span class="token punctuation">(</span><span class="token string">"db enable: %v"</span><span class="token punctuation">,</span> config<span class="token punctuation">.</span>DB<span class="token punctuation">.</span>Enabled<span class="token punctuation">)</span>
<span class="token punctuation">}</span>
fmt<span class="token punctuation">.</span><span class="token function">Sprintf</span><span class="token punctuation">(</span><span class="token string">"db Server : %v"</span><span class="token punctuation">,</span> config<span class="token punctuation">.</span>DB<span class="token punctuation">.</span>Server<span class="token punctuation">)</span>
fmt<span class="token punctuation">.</span><span class="token function">Sprintf</span><span class="token punctuation">(</span><span class="token string">"db Ports: %v"</span><span class="token punctuation">,</span> config<span class="token punctuation">.</span>DB<span class="token punctuation">.</span>Ports<span class="token punctuation">)</span>
fmt<span class="token punctuation">.</span><span class="token function">Sprintf</span><span class="token punctuation">(</span><span class="token string">"db ConnMax: %v"</span><span class="token punctuation">,</span> config<span class="token punctuation">.</span>DB<span class="token punctuation">.</span>ConnMax<span class="token punctuation">)</span>
<span class="token punctuation">}</span>
</code></pre>
<h6>go文件(方式二)</h6>
<pre><code class="lang-go hljs"><span class="token keyword">package</span> main
<span class="token keyword">import</span> <span class="token string">"flag"</span>
<span class="token keyword">func</span> main <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
runtime<span class="token punctuation">.</span><span class="token function">GOMAXPROCS</span><span class="token punctuation">(</span>runtime<span class="token punctuation">.</span><span class="token function">NumCPU</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
<span class="token comment">// flag可以识别String、Bool、Bool类型的数据</span>
<span class="token comment">//第一个参数是传入的参数,第二个参数是默认值,第三个参数是解释</span>
<span class="token comment">//传入时前面要加-,go build main.go -config /home/amber/amber.toml</span>
backup_dir <span class="token operator">:=</span> flag<span class="token punctuation">.</span><span class="token function">String</span><span class="token punctuation">(</span><span class="token string">"config"</span><span class="token punctuation">,</span> <span class="token string">"/home/amber/db.toml"</span><span class="token punctuation">,</span> <span class="token string">"config"</span><span class="token punctuation">)</span>
debug_mode <span class="token operator">:=</span> flag<span class="token punctuation">.</span><span class="token function">Bool</span><span class="token punctuation">(</span><span class="token string">"check"</span><span class="token punctuation">,</span> <span class="token boolean">false</span><span class="token punctuation">,</span> <span class="token string">"checktime"</span><span class="token punctuation">)</span>
int_value <span class="token operator">:=</span> flag<span class="token punctuation">.</span><span class="token function">Bool</span><span class="token punctuation">(</span><span class="token string">"num"</span><span class="token punctuation">,</span> <span class="token number">666</span><span class="token punctuation">,</span> <span class="token string">"number"</span><span class="token punctuation">)</span>
<span class="token comment">// 必须进行flag.Parse()转换</span>
flag<span class="token punctuation">.</span><span class="token function">Parse</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
<span class="token comment">// flag.Args()获取执行二进制文件时传入的参数,(二进制目录)./main time</span>
args <span class="token operator">:=</span> flag<span class="token punctuation">.</span><span class="token function">Args</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
<span class="token keyword">if</span> <span class="token function">len</span><span class="token punctuation">(</span>args<span class="token punctuation">)</span> <span class="token operator">></span> <span class="token number">0</span> <span class="token punctuation">{</span>
<span class="token keyword">switch</span> <span class="token punctuation">{</span>
<span class="token keyword">case</span> args<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span> <span class="token operator">==</span> <span class="token string">"time"</span> <span class="token operator">||</span> args<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span> <span class="token operator">==</span> <span class="token string">"t"</span><span class="token punctuation">:</span>
fmt<span class="token punctuation">.</span><span class="token function">Println</span><span class="token punctuation">(</span><span class="token string">"Build Time:"</span><span class="token punctuation">,</span> utils<span class="token punctuation">.</span>BuildTime<span class="token punctuation">)</span>
<span class="token keyword">return</span>
<span class="token keyword">default</span><span class="token punctuation">:</span>
fmt<span class="token punctuation">.</span><span class="token function">Println</span><span class="token punctuation">(</span><span class="token string">"Not match"</span><span class="token punctuation">)</span>
<span class="token keyword">return</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
<span class="token keyword">package</span> utils
<span class="token keyword">var</span> BuildTime <span class="token operator">=</span> <span class="token string">"build time"</span>
<span class="token comment">// 在build时将当前时间传入,执行二进制文件时会显示build的时间信息</span>
<span class="token comment">// 执行命令必须在main.go所在的目录下</span>
env GOOS<span class="token operator">=</span>linux GOARCH<span class="token operator">=</span>amd64 <span class="token keyword">go</span> build <span class="token operator">-</span>ldflags \
<span class="token string">"-X home/amber/utils.BuildTime=`date ' %Y-%m-%d_%I:%M:%S%p'`"</span>
<span class="token operator">-</span>o amber<span class="token operator">/</span>main main<span class="token punctuation">.</span><span class="token keyword">go</span>
<span class="token comment">// -o 指定生成二进制文件的位置,在amber目录下,main.go是待编译的文件</span>
</code></pre>
<h6>运行二进制文件</h6>
<pre><code class="lang-go hljs"><span class="token keyword">go</span> run main<span class="token punctuation">.</span><span class="token keyword">go</span> <span class="token operator">-</span>config <span class="token operator">/</span>home<span class="token operator">/</span>amber<span class="token punctuation">.</span>json
<span class="token punctuation">.</span><span class="token operator">/</span>main time
</code></pre>
您可能感兴趣的文章:
golang读取配置文件
Golang配置文件解析-oozgconf
使用docker部署一个带配置文件的golang项目
Golang 配置文件热加载
go-configor配置文件支持热加载
Golang加载yaml类型配置文件问题
Go语言从入门到精通 -【web项目实战篇】- 读取配置文件
基于golang语言web框架gin搭建应用-02配置文件(yml)
2.golang: golang读取配置文件(toml文件形式)
Go语言配置文件解析器,类似于Windows下的INI文件.
上一篇:linux下,go语言如何感知网络接口up的信息啊
下一篇:go 简单计数器
[关闭]