go utils
go-utils
cmd
cobra
—> 试着用 cobra-cli/README.md at main · spf13/cobra-cli cobra-generator 生成一个命令行小工具吧!
参考文章: 万字长文——Go 语言现代命令行框架 Cobra 详解 - 知乎
- 如何添加子命令 ✅
- 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)
}
- 注意上边的
toml:"region_id"部分, 代表的是映射的key, 称为 **Struct tags** - 可以直接使用
toml.LoadFile来读取配置文件
io
ioutil
go-systemd
testing infra
原生testing库
有返回值的方法测试
详细样例参见:
package util
import "testing"
func IntMin(a, b int) int {
if a < b {
return a
}
return b
}
func TestIntMin(t *testing.T) {
type args struct {
a int
b int
}
tests := []struct {
name string
args args
want int
}{
{"equal",
args{2, 2},
2,
},
{"less",
args{1, 2},
1,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := IntMin(tt.args.a, tt.args.b); got != tt.want {
t.Errorf("IntMin() = %v, want %v", got, tt.want)
}
})
}
}
无返回值的方法测试
assert
assert.Equal(t, *vertex3, vertex2)