Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

enumgen

Go Reference

本仓库提供为 go 开发中的 “枚举” 类型提供类型转换的生成方式

使用场景

日常开发中会这样定义、使用枚举类型

// money.go
type Money int64 

const (
	MoneyCNY Money = iota + 1
	MoneyUSD
)

// service.go
o := Order{
	Amount: req.Amount
	Money: int64(req.Money)
}

这里有两个小问题,就是类型每次都是手写,一是看不出原本的类型是什么,二是编码过程是不流畅的

如果把上面强制类型转换的代码改成这样,是不是就好看许多?

// service.go
o := Order{
	Amount: req.Amount
	Money: req.Money.Int64()
}

比起明面的强制类型转换,使用方法包装后,行为更加明确,编码过程也更为流畅

基础使用

使用下方命令安装

go install github.com/yikakia/enumgen

假设有枚举类型的定义文件

package money
type Money int64

const (
	MoneyCNY Money = iota + 1
	MoneyUSD
)

在其对应目录下,使用如下命令

enumgen -type Money

即可为枚举类型生成基础数据类型转换,及 String() string 的方法

后续有新增枚举,直接使用 go generate 命令即可

更多使用

命令格式:

enumgen [flags] -type T [directory]
enumgen [flags] -type T files... # 必须在同一个包中

更多参数:

-linecomment
使用行内注释作为 String 方法的展示
-output string
输出的文件名; 默认为 srcdir/<type>_string.go
-tags string
逗号分割的用于 go build 命令的参数
-trimprefix prefix
移除 String 方法中的特定前缀
-type string
逗号分割的一系列名字,必填

关于

本项目实现基于 stringer 进行修改

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages