大家好,我是站长 polarisxu。
刚刚 JetBrains 官方发布了 GoLand 2021.2 正式版本,一起看看都有哪些变化!
先大概预览主要新功能:GoLand 2021.2 引入了新的 **Go 模块**功能、新的**格式设置**选项以及对 **Go 1.17** 功能的支持。同时添加了新的快速修复,包括帮助正确使用新的 `//go:build` 语法的修正。
版本控制已经更新,改进包括使用 **GPG 密钥签署提交**的功能。对于 Web 开发者,增加了保存代码时在浏览器中自动重新加载页面的功能,并且为 MongoDB 字段和运算符提供了补全。
可以下载试用 30 天:<https://www.jetbrains.com/zh-cn/go/download/>。
## 01 Go 模块
### 手动加载 go.mod 变更
在 GoLand 2021.2 中,你可以在编辑 `go.mod` 时控制 IDE 如何调用 `go list`,也可以手动加载 `go.mod` 文件变更。
转到 *Preferences | Build, Execution, Deployment | Build Tools*,然后选择 *External changes* 选项。 当您在 IDE 中编辑文件时,GoLand 将自动停止调用 `go list`。
### 对不同 Go 版本的更好支持
如果您使用的功能来自比 `go.mod` 文件指定版本更新的 Go 版本,GoLang 将显示错误。 对于数字文字和 `//go:embed` 语句,可以使用快速修复更改 `go.mod` 中的 Go 版本。
### 处理未使用的依赖项
`replace` 指令中未使用的依赖项现在以灰色高亮显示。 这有助于将其与错误区分。 把鼠标悬停在其中一条灰线上,即可看到“Unused dependency”消息。
如果需要下载未使用的模块,按 ⌥+Enter 并选择 *Download all modules to the module cache* 选项。 您也可以下载单个模块。
## 02 格式化程序
在这一版本引入了 *Run gofmt on code reformat* 选项。 这是使 `gofmt` 在 GoLand 中更容易被发现的第一步,GoLand 具有自己的格式化程序。
选中此选项后,您可以使用快捷键 ⌘+⌥+L 调用两个格式化程序,`gofmt` 将在 GoLand 的格式化程序之后运行。
此选项默认启用,可在 *Preferences | Editor | Code Style | Go* 中切换。
## 03 更多快速修复
### 新的 //go:build 约束格式化支持
GoLand 新增多项快速修复,可帮助您正确使用旧的 `// +build` 约束和新的 `//go:build` 语法。
第一个快速修复将根据新语法的要求把 `//go:build` 行移动到文件顶部。
由于在 Go 1.16 中,您既可以使用旧语法也可以同时使用两种语法,因此除了生成 `//go:build` 行,还有一项快速修复可以生成 `// +build` 行。
### 一键启用 cgo 支持
如果您导入了“C”软件包,但忘记在项目设置中启用 *cgo* 支持,GoLand 将显示带有 *Enable cgo support* 快速修复的横幅。
还有 *Navigate to cgo import* 选项,可将光标置于软件包名称的开头。 这可以帮助您在大项目中找到 *import* 语句。
## 04 调试器
*[Preview](https://www.jetbrains.com/help/go/using-code-editor.html#preview-tab)* 模式现在也可用于应用程序调试。 允许您在一个选项卡中连续打开文件,防止在不同选项卡中打开多个文件导致编辑器混乱。
要在调试期间启用 *Preview* 模式,请转到 *Preferences | Editor | General | Editor Tabs* 勾选 *Enable preview tab* 复选框。
## 05 Go 1.17
在 Go 1.17 中,可以将切片转换为数组指针。 GoLang 不会把这些转换标记为错误。 要试用 Go 1.17 功能,请将 *Preferences | Go* 中的 GOROOT 更改为“Go 1.17beta1”或“Go 1.17rc1”。
## 06 快速导航
从此版本开始,您可以导航到 `internal` 文件夹所含*接口的实现*。 点击间距,跳转到实现。 您也可以从接口的实现跳到接口的定义。
## 07 其他变更
其他更多变更可以通过这里查看:<https://www.jetbrains.com/zh-cn/go/whatsnew/>。现在还有中文 UI,对中文支持更友好。