golang 运行-config指定配置文件

配置文件/home/amber/db.toml:
# This is a TOML document.

title = "TOML Example"

[database]
server = "192.10.92.10"
ports = [ 5000, 5001, 5002 ]
connection_max = 5000
enabled = true   //bool类型

go文件(方式一)
package main

import "toml"

type tomlConfig struct {
	Title string
	DB database `toml:"database"`
}
type database struct {
	Server  string `toml:"server"`
	Ports   []int  `toml:"ports"`
	ConnMax int    `toml:"connection_max"`
	Enabled bool   `toml:"enabled"`
}

func main () {
	// 通过toml.DecodeFile将配置文件所在路径和struct结合在一起
	var config tomlConfig
	filePath := "/home/amber/db.toml"
	if _, err := toml.DecodeFile(filePath, &config); err != nil {
		panic(err)
	}
	
	if config.DB.Enabled {
		fmt.Sprintf("db enable: %v", config.DB.Enabled)
	}
	fmt.Sprintf("db Server : %v", config.DB.Server)
	fmt.Sprintf("db Ports: %v", config.DB.Ports)
	fmt.Sprintf("db ConnMax: %v", config.DB.ConnMax)
}
go文件(方式二)
package main

import "flag"

func main () {
	runtime.GOMAXPROCS(runtime.NumCPU())

	// flag可以识别String、Bool、Bool类型的数据
	//第一个参数是传入的参数,第二个参数是默认值,第三个参数是解释
	//传入时前面要加-,go build main.go -config /home/amber/amber.toml
 	backup_dir := flag.String("config", "/home/amber/db.toml", "config")
    debug_mode := flag.Bool("check", false, "checktime")
    int_value := flag.Bool("num", 666, "number")

	// 必须进行flag.Parse()转换
	flag.Parse()
	
	// flag.Args()获取执行二进制文件时传入的参数,(二进制目录)./main time
	args := flag.Args()
	if len(args) > 0 {
		switch {
		case args[0] == "time" || args[0] == "t":
			fmt.Println("Build Time:", utils.BuildTime) 
			return
		default:
			fmt.Println("Not match")
			return
		}
}
	
package utils

var BuildTime = "build time"

// 在build时将当前时间传入,执行二进制文件时会显示build的时间信息
// 执行命令必须在main.go所在的目录下
env GOOS=linux GOARCH=amd64 go build -ldflags \
       "-X home/amber/utils.BuildTime=`date '+%Y-%m-%d_%I:%M:%S%p'`"
        -o amber/main main.go
// -o 指定生成二进制文件的位置,在amber目录下,main.go是待编译的文件
运行二进制文件
go run main.go -config /home/amber.json

./main time
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值