配置文件/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
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 () {
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())
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()
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"
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
运行二进制文件
go run main.go -config /home/amber.json
./main time