golang自动补全函数返回值插件库goreturns的使用
golang自动补全函数返回值插件库goreturns的使用
goreturns是一个可以为不完整的Go返回语句自动添加零值返回值的工具,可以节省编写Go代码的时间。它受到goimports的启发并基于goimports开发。
功能示例
以下是一个不完整的返回语句:
func F() (*MyType, int, error) { return errors.New("foo") }
goreturns会自动为其添加nil和0返回值(*MyType和int的零值):
func F() (*MyType, int, error) { return nil, 0, errors.New("foo") }
安装方法
go get -u github.com/sqs/goreturns
使用方法
基本使用
goreturns file.go
查看差异
要查看goreturns会对示例文件做哪些修改:
goreturns -d $GOPATH/github.com/sqs/goreturns/_sample/a.go
编辑器集成
您可以在保存后钩子中用goreturns替换gofmt或goimports。默认情况下,goreturns会在执行自己的处理之前先对文件调用goimports。
goreturns的行为与gofmt相同(相同的标志等),但除了代码格式化外,还会修复返回语句。
完整示例
下面是一个更完整的示例,展示goreturns如何处理多个返回值:
package main
import "errors"
// 原始不完整返回语句
func GetUser(id int) (*User, int, error) {
if id < 0 {
return errors.New("invalid id") // 缺少前两个返回值
}
return &User{Name: "Alice"}, 200, nil
}
type User struct {
Name string
}
运行goreturns后:
package main
import "errors"
// 自动补全后的返回语句
func GetUser(id int) (*User, int, error) {
if id < 0 {
return nil, 0, errors.New("invalid id") // 自动添加了nil和0
}
return &User{Name: "Alice"}, 200, nil
}
type User struct {
Name string
}
更多关于golang自动补全函数返回值插件库goreturns的使用的实战教程也可以访问 https://www.itying.com/category-94-b0.html
更多关于golang自动补全函数返回值插件库goreturns的使用的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
goreturns - Go 语言自动补全函数返回值的工具
goreturns 是一个用于 Go 语言的工具,它能够自动补全函数的返回值语句。这个工具特别适合在编写 Go 代码时快速生成正确的返回值结构,特别是当函数有多个返回值时。
安装 goreturns
可以通过 go get 命令安装 goreturns:
go get -u github.com/sqs/goreturns
或者如果你使用 Go 1.16+,可以使用:
go install github.com/sqs/goreturns@latest
安装完成后,确保 $GOPATH/bin
在你的 PATH 环境变量中。
基本使用
goreturns 最简单的用法是处理一个不完整的 Go 文件,它会自动补全函数的返回值。
假设你有一个文件 example.go
内容如下:
package main
func divide(a, b int) (int, error) {
if b == 0 {
return 0,
}
return a / b, nil
}
运行 goreturns:
goreturns example.go
输出将会是:
package main
func divide(a, b int) (int, error) {
if b == 0 {
return 0, errors.New("division by zero")
}
return a / b, nil
}
与编辑器集成
goreturns 可以与多种编辑器集成,作为保存时的格式化工具。
VS Code 集成
- 打开 VS Code 设置 (Ctrl+,)
- 搜索 “go.formatTool”
- 设置为 “goreturns”
- 确保 “editor.formatOnSave” 已启用
Vim 集成
在 .vimrc
中添加:
autocmd FileType go autocmd BufWritePre <buffer> call CocAction('format')
" 或者如果你不使用 coc.nvim
autocmd FileType go autocmd BufWritePre <buffer> Fmt
GoLand/IntelliJ IDEA
- 打开设置 -> Tools -> File Watchers
- 添加一个新的 watcher
- 设置 Program 为 goreturns 的路径
- 设置 Arguments 为
$FilePath$
- 设置 Output paths to refresh 为
$FilePath$
高级用法
自定义错误处理
goreturns 会自动为错误类型生成合理的默认值。你也可以自定义错误消息:
func process() error {
return // 输入光标在这里运行 goreturns
}
运行后会变成:
func process() error {
return errors.New("not implemented")
}
多返回值处理
对于多返回值的函数:
func getUser() (*User, error) {
return // 输入光标在这里运行 goreturns
}
会变成:
func getUser() (*User, error) {
return nil, errors.New("not implemented")
}
结构体返回值
对于返回结构体的函数:
func createUser() User {
return // 输入光标在这里运行 goreturns
}
会变成:
func createUser() User {
return User{}
}
与其他工具结合
goreturns 可以与其他 Go 工具链结合使用,例如:
goreturns -w $(gofmt -l .)
这会先使用 gofmt 列出需要格式化的文件,然后用 goreturns 处理它们。
替代方案
虽然 goreturns 很好用,但也有其他类似工具:
- gofmt - 官方格式化工具,但不补全返回值
- goimports - 自动添加/删除 import 语句
- gopls - Go 语言服务器的自动补全功能
总结
goreturns 是一个简单但强大的工具,可以显著提高 Go 开发效率,特别是在处理多返回值函数时。它与编辑器的集成使得在保存文件时自动补全返回值变得非常方便。
对于任何 Go 开发者来说,特别是那些经常需要处理错误返回的开发者,goreturns 都是一个值得添加到工具链中的实用工具。