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是待编译的文件