教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 golang 运行-config指定配置文件

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 运行-config指定配置文件”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
golang读取配置文件
Golang配置文件解析-oozgconf
使用docker部署一个带配置文件的golang项目
Golang 配置文件热加载
go-configor配置文件支持热加载
Golang加载yaml类型配置文件问题
Go语言从入门到精通 -【web项目实战篇】- 读取配置文件
基于golang语言web框架gin搭建应用-02配置文件(yml)
2.golang: golang读取配置文件(toml文件形式)
Go语言配置文件解析器,类似于Windows下的INI文件.

[关闭]
~ ~