go utils

go-utils

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 来读取配置文件

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)

ginkgo库