说明
implgen 用于通过 interface 定义生成 Go 接口空白实现代码的工具。
用于减少开发人员工作量,将机械式的复制粘贴代码交由工具来实现,提升工作效率。
安装说明
1. 通过源码安装
- 执行命令通过源码安装:
go get github.com/ssoor/implgen
- 执行命令检查输出来验证安装结果:
implgen --help
2. 使用 gex 安装
gex 是用来管理项目工具类依赖项的工具。
通过使用
gex可以清晰的说明代码都依赖于哪些工具,并在使用时自动拉取和安装相应的工具,从而避免了开发人员不清楚项目依赖哪些第三方工具,以及切换开发环境需要逐个安装工具的问题。
- 执行命令通过源码安装
gex:
go get github.com/izumin5210/gex/cmd/gex
- 执行命令添加
implgen工具依赖:
gex --add github.com/golang/mock/mockgen
- 执行命令检查输出验证安装结果:
gex implgen --help
使用说明
1. 使用示例
- 编写服务定义为见,并将文件存储到
/foo_infa.go:
package main
//go:generate gex implgen -destination impl/foo_service.go -package impl -source foo_infa.go
// 接口说明
type Foo interface {
// 接口方法说明1
Bar(x int) int // 接口方法说明2
}
- 执行命令调用工具生成代码:
go generate ./...
- 命令执行成功后会输出生成内容到文件
/impl/foo_service.go,具体内容如下:
// Code generated by ImplGen.
// Source: foo_infa.go
package impl
// 接口说明
type Foo struct {
}
// 接口说明
func NewFoo() *Foo {
implObj := &Foo{}
// TODO: NewFoo() Not implemented
return implObj
}
// 接口方法说明1
func (m *Foo) Bar(x int) int { // 接口方法说明2
// TODO: Foo.Bar(x int) int Not implemented
panic("Foo.Bar(x int) int Not implemented")
}
2. 参数说明
查看命令所支持的参数:
implgen --help
参数列表:
-source string
接口定义文件/源文件,工具根据源文件生成输出结果-destination string
指定输出文件路径,默认将内容输出到控制台-package string
代码生成的包名package <包名>-mock_names string
传参为逗号分隔的intefaceName=implementName对,用来指定接口生成的结构名。默认名会根据interfaceName生成,如果interfaceName后缀为Interface则删除Interface后缀后作为名称,如果没有Interface后缀就直接使用interfaceName-version
打印版本信息-debug_parser bool
打印解析器解析结果后就退出
其他
使用 VSCode 的话可以通过安装 Todo Tree来查看还有哪些方法没有实现。
https://marketplace.visualstudio.com/items?itemName=Gruntfuggly.todo-tree

插件会列出来所有 TODO 注释,方便开发人员快速定位。


本文介绍了一种名为implgen的工具,该工具能够自动生成Go语言接口的实现代码,有效减轻开发人员的工作负担,提高开发效率。通过源码或gex进行安装,并提供了详细的使用示例及参数说明。
1173

被折叠的 条评论
为什么被折叠?



