快捷键大全
Windows/Linux版本
Mac版本
代码自动生成
1. 动态模板
在 GoLand 中,预定义的动态模板位于 Preferences → Editor → Live Templates ,并且分组。
插入动态模板
键入模板缩写并按调用键(通常Tab默认情况下)。
或者,在代码菜单上,单击插入动态模板 Ctrl+J以打开建议列表并选择必要的模板。
用动态模板包围代码块
- 选择一段代码被包围。
- 在代码菜单上,单击环绕 Ctrl+Alt+J以打开建议列表并选择必要的模板。
动态模板的类型
区分以下类型的动态模板:
- 简单模板 只包含固定的纯文本。当你展开一个简单的模板时,文本会自动插入到你的源代码中,替换缩写。
缩写 | 扩展到 |
imp |
import ( ) |
int |
func init() { } |
main |
func main() { } |
- 参数化模板 包含启用用户输入的变量。当你展开参数化模板时,变量要么替换为输入字段供用户手动指定,要么由 GoLand 自动计算。
缩写 | 扩展到 |
forr |
for key, value := range collection { } |
meth |
func (receiver ) name(params) { } |
- 环绕模板 用用户指定的文本包装选定的代码块。
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.17 go get -u github.com/cweill/gotests/... // Go 版本:>= Go 1.17 go 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中使用
- 光标移动到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 + Enter
3.选择Add key to tag
4.stuct快速生成构造参数
操作步骤:
- 光标移动到struct 名称上
- Alt/Option + Enter
- Generate Constructor
- 选择属性
常见问题
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文件 就可以执行了
赖可以正常找找到
解决方案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文件 就可以执行了