规范
命名规范
- 包名是小写单词,不应该有下划线或混合大小写,保持简洁,不要过早考虑包名冲突
- 使用驼峰而非下划线来命名函数或者变量
- 接口名称必须是er为后缀
- uber规范
GO组件使用注意
urfave/cli
- github: cli
- version字段默认flag为v,当我想定义一下-v, verbose的时候是会提示被重复的,修改默认的versionFlag即可;官网的README.md里面也有提及
cli.VersionFlag = cli.BoolFlag{
Name: "V, version",
Usage: "print only the version",
}
- BoolFlag:若添加了一些flag,则其值为true,若不添加,值为false
- Flag当中的Destination可以将参数对应的value拿到
- 通过Args可以拿到命令行里面入参信息
func FileActions(ctx *cli.Context) error {
args := ctx.Args()
argsLen := len(args)
target := args.Get(0)
srcFile := args.Get(1)
destFile := args.Get(2)
}
beego
httplib
httplib是beego的一个包,里面有restful相关的方法,问题如下:
package handler
func TestUpdateEntityIdByHostId(t *testing.T) {
// queryParam参数
postRequest := httplib.Put("http://localhost:6868/host/entity")
postRequest.Param("hostId", "23143243214").Param("entityId", "34134123")
fmt.Println(postRequest)
req, err := postRequest.String()
....
}
//取pathVariable方法
r.URL.Query().Get("hostId") // 此种方法只能取pathVariable
//取QueryParam参数方法
r.ParseForm() // 若要取queryParam,必须先parseForm一下,然后才能拿到具体数据
r.Form.Get("hostId") // 发现此方法有时候取不到值,反而Query可以使用
r.URL.Query().Get("hostId")
//取QueryParam参数方法
r.FormValue("hostId")
//取body当中参数方法
bytes, err := ioutil.ReadAll(r.Body) //将bytes转成json即可
urfave/cli
- 一个bughttps://github.com/urfave/cli/issues/355 ####
- 如何输出色彩 bash_color
cobra
- 支持json、table样式输出
gorm
err := model.GetDb().Table("act2_job_record").Pluck("id",&strs).Error
gRPC
包管理
govendor
删除依赖包下面的所有子包
govendor remove idcos.io/cloudboot/hardware/...
更新依赖包下面的所有子包;注意若子包未被依赖,则不会添加进来
govendor update idcos.io/cloudboot/hardware/...