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

1 回复

更多关于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 集成

  1. 打开 VS Code 设置 (Ctrl+,)
  2. 搜索 “go.formatTool”
  3. 设置为 “goreturns”
  4. 确保 “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

  1. 打开设置 -> Tools -> File Watchers
  2. 添加一个新的 watcher
  3. 设置 Program 为 goreturns 的路径
  4. 设置 Arguments 为 $FilePath$
  5. 设置 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 很好用,但也有其他类似工具:

  1. gofmt - 官方格式化工具,但不补全返回值
  2. goimports - 自动添加/删除 import 语句
  3. gopls - Go 语言服务器的自动补全功能

总结

goreturns 是一个简单但强大的工具,可以显著提高 Go 开发效率,特别是在处理多返回值函数时。它与编辑器的集成使得在保存文件时自动补全返回值变得非常方便。

对于任何 Go 开发者来说,特别是那些经常需要处理错误返回的开发者,goreturns 都是一个值得添加到工具链中的实用工具。

回到顶部