Goland 嗖嗖的: 快捷键,自动生成代码等效率小技巧
快捷键大全
Windows/Linux 版本
Mac 版本
代码自动生成
1. 动态模板
在 GoLand 中,预定义的动态模板位于 Preferences → Editor → Live Templates ,并且分组。
插入动态模板
键入模板缩写并按调用键(通常 Tab 默认情况下)。
或者,在代码菜单上,单击插入动态模板 Ctrl+J 以打开建议列表并选择必要的模板。
用动态模板包围代码块
选择一段代码被包围。
在代码菜单上,单击环绕 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
安装和更新:
用法
从命令行,gotests
可以为特定的源文件或整个目录生成 Go 测试。默认情况下,它将其输出打印到stdout
.
options 说明
为源文件中所有的函数和方法生成 test 方法
为单个方法生成 test 方法
Goland 中使用
光标移动到 Method/Function 上
Command/Control+Shift+T
4. 自动格式化
GoLand 也支持在保存代码时,自动调用
gofmt
和goimports
来自动格式化代码。在 GoLand(>=2019.3)中,是通过 File Watchers 插件来实现此功能的。
首先,得保证安装了一个叫做”File Watchers”的插件,并设置为启用状态:
然后,Tools → File Wathcers,一般引入 go fmt,goimports 即可
5. 自动生成 tag
在 struct 结构里,可以在字段类型后敲入 json 或 xml 向结构添加标记。
6. 自动生成 stuct 的接口,tag,构造参数
1.stuct 快速实现 Interface
操作步骤:
光标移动到 struct 名称上
Alt/Option + Enter
选择 Implement Interface ... Control+I
搜索你需要实现的 interface
2.stuct 快速抽象 Interface
操作步骤:
右键 struct 名称
选择 Refactor->Extract->Interface
选择要抽象的方法,填写 interface 名称
3.stuct 快速生成 tag
操作步骤:1.把你的光标放在{}
中间 2.Alt/Option + Enter3.选择Add key to tag
4.stuct 快速生成构造参数
操作步骤:
光标移动到 struct 名称上
Alt/Option + Enter
Generate Constructor
选择属性
常见问题
Go module
1. GO 目录中不存在 go.mod 文件
go.sum 是记录所依赖的项目的版本的锁定。
2. Goland 自动下载所有依赖
项目中使用了 go.mod 时可以使用以下命令自动下载全部依赖
方法一
方法二
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 块中手工加上一条:
注意 v1.0.0 这个版本号是一个临时的版本号。
然后在 module a 的 go.mod 中使用 replace 将上面对 module b 的 require 替换为本地的 module b:
这样 go 命令就会使用你本地正在开发、尚未提交 github 的 module b 了。
但这个本地路径是因开发者环境而异的。
可以使用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
解决方案 2:goland ide 多选可快捷操作
选择要测试的文件, 就是没有_test 后缀的文件会出现 源文件和测试文件使用
|
分割的写法.
解决方案 3: go mod
使用 mod 模式 在根目录执行命令: go mod init [module-path] 使项目中出现 go.mod 文件 就可以执行了
版权声明: 本文为 InfoQ 作者【琦彦】的原创文章。
原文链接:【http://xie.infoq.cn/article/5cbfa0b4be45e5c3ccb568617】。文章转载请联系作者。
评论