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
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)