写点什么

Goland 嗖嗖的: 快捷键,自动生成代码等效率小技巧

作者:琦彦
  • 2022 年 10 月 04 日
    中国香港
  • 本文字数:2638 字

    阅读完需:约 9 分钟

Goland嗖嗖的: 快捷键,自动生成代码等效率小技巧

快捷键大全

Windows/Linux 版本

Mac 版本

代码自动生成

1. 动态模板

在 GoLand 中,预定义的动态模板位于 Preferences → Editor → Live Templates ,并且分组。


插入动态模板

键入模板缩写并按调用键(通常 Tab 默认情况下)。

或者,在代码菜单上,单击插入动态模板 Ctrl+J 以打开建议列表并选择必要的模板。

用动态模板包围代码块

  1. 选择一段代码被包围。

  2. 在代码菜单上,单击环绕 Ctrl+Alt+J 以打开建议列表并选择必要的模板。

动态模板的类型

区分以下类型的动态模板:


  • 简单模板 只包含固定的纯文本。当你展开一个简单的模板时,文本会自动插入到你的源代码中,替换缩写。


  • 参数化模板 包含启用用户输入的变量。当你展开参数化模板时,变量要么替换为输入字段供用户手动指定,要么由 GoLand 自动计算。


  • 环绕模板 用用户指定的文本包装选定的代码块。

  • Postfix 代码完成类似于动态模板。它转换当前表达式而不选择它。例如,你可以.if在表达式后键入以调用相应的后缀完成并用if语句包装表达式。

配置动态模板

要配置动态模板,请打开 Editor | IDE 设置的 Live TemplatesCtrl+Alt+S 页面。在 Live Templates 页面上,你可以查看所有可用的动态模板、编辑它们并创建新模板


可参考 在 GoLand 中使用自定义动态模板高效编程

2. 自动生成注释(Goanno)

安装

  • 方式一:goland plugins marketplace(搜索 Goanno)

  • 方式二:下载 release jar(goland install from disk) goanno.jar

使用

  • 方式一:在函数上方点击快捷键 control + commond + / (windows: control + alt + /)

  • 方式二:右键->Generate -> Goanno

自定义模板

通过 Tools-Goanno Setting 编辑模版信息

3. 自动生成测试文件(Goanno)

安装

最低 Go 版本: Go 1.6


用于go get安装和更新:


// Go 版本:< Go 1.17go get -u github.com/cweill/gotests/...// Go 版本:>= Go 1.17go install -u github.com/cweill/gotests/...
复制代码

用法

从命令行,gotests可以为特定的源文件或整个目录生成 Go 测试。默认情况下,它将其输出打印到stdout.


gotests [options] PATH ...
复制代码
options 说明
-all           generate go tests for all functions and methods -excl          regexp. generate go tests for functions and methods that don't match. Takes precedence over -only, -exported, and -all-exported      generate go tests for exported functions and methods. Takes precedence over -only and -all-i             print test inputs in error messages-only          regexp. generate go tests for functions and methods that match only.Takes precedence over -all-w             write output to (test) files instead of stdout-nosubtests    disable subtest generation. Only available for Go 1.7+-template_dir  optional. Path to a directory containing custom test code templates
复制代码


  • 为源文件中所有的函数和方法生成 test 方法


gotests -all -w -i XXX.go
复制代码


  • 为单个方法生成 test 方法


gotests -w -only ^XXX$ PATH
复制代码

Goland 中使用

  1. 光标移动到 Method/Function 上

  2. Command/Control+Shift+T

4. 自动格式化

GoLand 也支持在保存代码时,自动调用 gofmtgoimports 来自动格式化代码。在 GoLand(>=2019.3)中,是通过 File Watchers 插件来实现此功能的。

  • 首先,得保证安装了一个叫做”File Watchers”的插件,并设置为启用状态:

  • 然后,Tools → File Wathcers,一般引入 go fmt,goimports 即可

5. 自动生成 tag

在 struct 结构里,可以在字段类型后敲入 json 或 xml 向结构添加标记。

6. 自动生成 stuct 的接口,tag,构造参数

1.stuct 快速实现 Interface

操作步骤:


  1. 光标移动到 struct 名称上

  2. Alt/Option + Enter

  3. 选择 Implement Interface ... Control+I

  4. 搜索你需要实现的 interface

2.stuct 快速抽象 Interface

操作步骤:


  1. 右键 struct 名称

  2. 选择 Refactor->Extract->Interface

  3. 选择要抽象的方法,填写 interface 名称

3.stuct 快速生成 tag

操作步骤:1.把你的光标放在{}中间 2.Alt/Option + Enter3.选择Add key to tag

4.stuct 快速生成构造参数

操作步骤:


  1. 光标移动到 struct 名称上

  2. Alt/Option + Enter

  3. Generate Constructor

  4. 选择属性

常见问题

Go module

1. GO 目录中不存在 go.mod 文件

# 在该项目的根目录下,执行下面的命令:go mod init task-manage   # task-manag就是项目的名称
复制代码


go.sum 是记录所依赖的项目的版本的锁定。

2. Goland 自动下载所有依赖

项目中使用了 go.mod 时可以使用以下命令自动下载全部依赖


方法一


go get -d -v ./...
复制代码


方法二


go mod tidy
复制代码

3. 导入本地 module

在这个 module 还没有发布到 GitHub 的情况下,如何 import 自己在本地创建的 module?


在 Go 1.17 版本及之前版本的解决方法是使用 go mod 的 replace 指示符(directive)。假如你的 module a 要 import 的 module b 将发布到 github.com/user/repo 中,那么你可以手动在 module 的 go.mod 中的 require 块中手工加上一条:


require github.com/user/repo v1.0.0
复制代码


注意 v1.0.0 这个版本号是一个临时的版本号。


然后在 module a 的 go.mod 中使用 replace 将上面对 module b 的 require 替换为本地的 module b:


replace github.com/user/repo v1.0.0 => module b本地路径
复制代码


这样 go 命令就会使用你本地正在开发、尚未提交 github 的 module b 了。


但这个本地路径是因开发者环境而异的。


可以使用go mod vendor


# vendor:将所有依赖包存到当前目录下的vendor目录下go mod vendor
复制代码


或者使用 Go workspace


Go 1.18 版本中加入了 Go 工作区(Go workspace,也译作 Go 工作空间)辅助构建机制。


基于这个机制,我们可以将多个本地路径放入同一个 workspace 中,这样,在这个 workspace 下各个 module 的构建将优先使用 workspace 下的 module 的源码。工作区配置数据会放在一个名为 go.work 的文件中,这个文件是开发者环境相关的,因此并不需要提交到源码服务器上,这就解决了上面“伪造 go.mod”方案带来的那些问题。


go get -u github.com/cweill/gotests/...

测试

1. command-line-arguments [command-line-arguments.test]

golang ide 执行 go test xxx_test.go 默认以 file 运行而没有引入依赖文件,需要主动引入依赖,执行测试文件之前需要先将源文件进行编译.通常: 项目在 gopath 或者项目根目录下,依赖可以正常找找到

解决方案 1:go test -v

go test -v xxxx.go xxxx_test.go
复制代码

解决方案 2:goland ide 多选可快捷操作

选择要测试的文件, 就是没有_test 后缀的文件会出现 源文件和测试文件使用 |分割的写法.

解决方案 3: go mod

使用 mod 模式 在根目录执行命令: go mod init [module-path] 使项目中出现 go.mod 文件 就可以执行了


发布于: 2022 年 10 月 04 日阅读数: 8
用户头像

琦彦

关注

孤独的技术没有价值 2019.08.24 加入

还未添加个人简介

评论

发布
暂无评论
Goland嗖嗖的: 快捷键,自动生成代码等效率小技巧_Go_琦彦_InfoQ写作社区