go generate是Go 自带的工具。使用命令go generate执行。go generate是利用源代码中的注释工作的。格式如下: //go:generate command arg1 arg2 这样在同一个目录下执行命令go generate就会自动运行命令command arg1 arg2。command可以是在PATH中的任何命令,应用非常广泛。配合stringer命令可以为给定类型生成String方法,...
执行go:generatego generate main.go 不指定main.go 文件,generate命令会查找所有包含 //go:generate 指令的文件,并执行这些指令后面的命令。这个例子就会运行 stringer -type=UserStatus,为 UserStatus 类型生成一个新的 Go 文件userstatus_string.go,包含 String() 方法的实现。
通常,此过程将使用go generate运行,如下所示: //go:generate stringer -type=Pill 使用注释 我们在创建常量时可以给常量加注释,使用stringer命令生成代码时可以用注释作为输出字符串。 创建Pill类型 package painkiller //go:generate stringer -type=Pill -linecomment type Pill int const ( Placebo Pill...
安装好的 stringer 工具位于 GOPATH/bin 目录下,想要正常使用它,需要先将 GOPATH/bin 目录添加到系统的环境变量 PATH 中。 【示例 2】使用 stringer 工具实现 String() 方法: 首先,在项目目录下新建一个 painkiller 文件夹,并在该文件夹中创建 painkiller.go 文件,文件内容如下: //go:generate stringer -type...
本文将介绍 Golang 中的stringer工具,它可以帮助你自动生成String()方法,从而使代码更易于维护和理解。我们将从Stringer接口的基本用法入手,展示如何自定义类型的字符串表示,然后介绍stringer命令行工具,包括安装、使用方法和一些高级技巧。 使用Stringer 接口自定义类型的字符串表示 ...
方式一维护错误码与错误信息的关系较为复杂,我们可以借助go generate来自动生成代码。 3.3.1 安装stringer stringer不是Go自带工具,需要手动安装。执行如下命令即可 go get golang.org/x/tools/cmd/stringer 3.3.1 定义错误信息 新建error_handler.go。在error_handler中,增加注释//go:generate stringer -type ErrC...
【示例 2】使用 stringer 工具实现 String() 方法: 首先,在项目目录下新建一个 painkiller 文件夹,并在该文件夹中创建 painkiller.go 文件,文件内容如下: //go:generate stringer -type=Pill package painkiller type Pill int const ( Placebo Pill = iota ...
一种是在errcode中,增加注释//go:generate stringer -type ErrCode -linecomment 另一种是直接命令行执行stringer -type ErrCode -linecomment 执行完毕会发现自动生成新文件 关于stringer的命令,大家可以通过stringer -h查看 注意点: go:generate前面只能使用//注释,注释必须在行首,前面不能有空格且//与go:generate之...
在创建常量时,可以添加注释,使用Stringer命令时,这些注释会被用作输出字符串。使用命令`//go:generate stringer -type=Pill -linecomment`生成的代码中,调用`fmt.Print`时会打印字符串"阿司匹林"。为了在生成代码时去掉常量名前缀,可以使用`-trimprefix`选项。比如,对于包含"Pill"前缀的变量,如`...
//go:generate stringer -type=Pill# go generate && go build && ls gen go.mod main.go pill_string.go 可以看到就生成了一个pill_string.go文件,里面实现了我们想要的String方法: 代码语言:javascript 代码运行次数:0 运行 AI代码解释 func _() { // An "invalid array index" compiler error signifies...