cmd

cobra

—> 试着用 cobra-cli/README.md at main · spf13/cobra-cli cobra-generator 生成一个命令行小工具吧!

参考文章: 万字长文——Go 语言现代命令行框架 Cobra 详解 - 知乎

  1. 如何添加子命令 ✅
  2. k8s中如何使用? 按照一个样例来.

pflag

Go 命令行参数解析工具 pflag 使用 | 江湖十年 | 学而不思则罔,思而不学则殆。

toml

https://github.com/pelletier/go-toml

import (
	"fmt"
	"github.com/pelletier/go-toml"
)

type MyConfig struct {
	Version  int
	Name     string
	Tags     []string
	RegionId string `toml:"region_id"`
}

func Unmarshal() {
	doc := `
	version = 2
	name = "go-toml"
	tags = ["go", "toml"]
	region_id = "cn-beijing"
	`
	var cfg MyConfig
	err := toml.Unmarshal([]byte(doc), &cfg)
	if err != nil {
		panic(err)
	}
	fmt.Println("version:", cfg.Version)
	fmt.Println("name:", cfg.Name)
	fmt.Println("tags:", cfg.Tags)
	fmt.Println("regionId:", cfg.RegionId)
	fmt.Println("==================")

	confFile, err := toml.LoadFile("/etc/tomltest/tomltest.conf")
	if err != nil {
		panic(err)
	}

	var cfg2 MyConfig
	confFile.Unmarshal(&cfg2)
	fmt.Println("version:", cfg2.Version)
	fmt.Println("name:", cfg2.Name)
	fmt.Println("tags:", cfg2.Tags)
	fmt.Println("regionId:", cfg2.RegionId)
}
  1. 注意上边的 toml:"region_id" 部分, 代表的是映射的key, 称为 **Struct tags**
  2. 可以直接使用 toml.LoadFile 来读取配置文件