sloth

command module
v1.2.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 27, 2022 License: Apache-2.0 Imports: 18 Imported by: 0

README

sloth 工具:

1、支持为结构体属性自动生成Get\Set方法,必须参数

a、-out:需要自动生成生成代码的结构体(多个时,号分开),结构体必须存在。

b、-fun:set|get组合(,号分割),也可以是单独使用,即-fun=set只生成Set方法,-fun=get只生成Get方法。

c、-mod: 自定义模板支持,指定模板文件目录。模板文件命名必须为:sloth_getter.tmp|sloth_setter.tmp。

2、支持自定义模板: 模板变量使用{{.var}}标识,可用组合变量:

Receiver:结构体简写(首字母)

Struct:结构体

Field:结构体public字段

Type:结构体public字段类型

Column:gorm映射字段

示例:

func ({{.Receiver}} *{{.Struct}}) Get{{.Field}}() {{.Type}} {
	return {{.Receiver}}.{{.Field}}
}
func ({{.Receiver}} *{{.Struct}}) Set{{.Field}}(val {{.Type}}) {
	{{.Receiver}}.{{.Field}} = val
	//From custom template
}

用法

install sloth:

go install github.com/bill-cang/sloth@latest

用例

在需要生成代码的结构体文件添加命令://go:generate sloth -out=Bloc,Office -fun=set,get

在文件过载目录执行命令:go generate

//go:generate  sloth -out=Bloc,Office -fun=set,get
package example

type Bloc struct {
	Office
	Name       string `gorm:"column:name;not null;comment:名称"`
	Logo       string `gorm:"column:logo;comment:logo"`
	Master     string `gorm:"column:master;comment:负责人"`
	Phone      string `gorm:"column:phone;comment:电话"`
	Email      string `gorm:"column:email;comment:邮箱"`
	ProvinceID string `gorm:"column:province_id;comment:所属省id"`
	CityID     string `gorm:"column:city_id;comment:所属市id"`
	Address    string `gorm:"column:address;comment:地址"`
}

type Office struct {
	Name       string `gorm:"column:name;not null;comment:名称"`
	Logo       string `gorm:"column:logo;comment:机构logo"`
	Master     string `gorm:"column:master;comment:负责人"`
	Email      string `gorm:"column:email;comment:邮箱"`
	Phone      string `gorm:"column:phone;comment:电话"`
	Address    string `gorm:"column:address;comment:联系地址"`
	ProvinceID string `gorm:"column:province_id;comment:所属省id"`
	CityID     string `gorm:"column:city_id;comment:所属市id"`
}

会生成两个文件,bloc_sloth.go 和 office_sloth.go

bloc_sloth.go

// Code generated by "sloth -out=Bloc,Office -fun=set,get"; DO NOT EDIT.

package example

func (b *Bloc) SetName(val string) {
	b.Name = val
}

func (b *Bloc) GetName() string {
	return b.Name
}

func (b *Bloc) SetLogo(val string) {
	b.Logo = val
}

func (b *Bloc) GetLogo() string {
	return b.Logo
}

func (b *Bloc) SetMaster(val string) {
	b.Master = val
}

func (b *Bloc) GetMaster() string {
	return b.Master
}

func (b *Bloc) SetPhone(val string) {
	b.Phone = val
}

func (b *Bloc) GetPhone() string {
	return b.Phone
}

func (b *Bloc) SetEmail(val string) {
	b.Email = val
}

func (b *Bloc) GetEmail() string {
	return b.Email
}

func (b *Bloc) SetProvinceID(val string) {
	b.ProvinceID = val
}

func (b *Bloc) GetProvinceID() string {
	return b.ProvinceID
}

func (b *Bloc) SetCityID(val string) {
	b.CityID = val
}

func (b *Bloc) GetCityID() string {
	return b.CityID
}

func (b *Bloc) SetAddress(val string) {
	b.Address = val
}

func (b *Bloc) GetAddress() string {
	return b.Address
}

office_sloth.go

// Code generated by "sloth -out=Bloc,Office -fun=set,get"; DO NOT EDIT.

package example

func (o *Office) SetName(val string) {
	o.Name = val
}

func (o *Office) GetName() string {
	return o.Name
}

func (o *Office) SetLogo(val string) {
	o.Logo = val
}

func (o *Office) GetLogo() string {
	return o.Logo
}

func (o *Office) SetMaster(val string) {
	o.Master = val
}

func (o *Office) GetMaster() string {
	return o.Master
}

func (o *Office) SetEmail(val string) {
	o.Email = val
}

func (o *Office) GetEmail() string {
	return o.Email
}

func (o *Office) SetPhone(val string) {
	o.Phone = val
}

func (o *Office) GetPhone() string {
	return o.Phone
}

func (o *Office) SetAddress(val string) {
	o.Address = val
}

func (o *Office) GetAddress() string {
	return o.Address
}

func (o *Office) SetProvinceID(val string) {
	o.ProvinceID = val
}

func (o *Office) GetProvinceID() string {
	return o.ProvinceID
}

func (o *Office) SetCityID(val string) {
	o.CityID = val
}

func (o *Office) GetCityID() string {
	return o.CityID
}

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
@Time : 2022/5/7 10:53 @Author : ckx0709 @Remark :
@Time : 2022/5/7 10:53 @Author : ckx0709 @Remark :

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL