配置文件/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
Logo

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

更多推荐