GoLand 最新变化

GoLand 2020.1 引入了对 Go 模块支持的各种升级、几乎不需要用户交互的代码编辑功能,以及扩展的代码补全系列。

除此之外,还添加了新的代码检查、快速修复和其他改进,例如新的 LightEdit 模式(可让您在文本编辑器中打开文件,而无需创建或加载项目)、智能拼写和语法检查以及用于 Web 开发和数据库处理的新功能。

喜欢交互式学习,而不是阅读信息? 在 IDE 内完成 GoLand 2020.1 的功能教程。

Go 模块改进

在新的 Environment Variables 对话框中,GoLand 会自动建议在 'direct' 和 'off' 值之间进行选择来配置 GOPROXY。

现已支持 Go 1.13 的环境变量 GOPROXYGOPRIVATEGOSUMDBGONOPROXYGONOSUMB

使用 Go Modules 项目模板配置其默认值。 只需点击 Environment 字段中的 Browse 图标即可打开新的 Environment Variables 对话框。

'replace' 关键字代码补全、依赖项名称和正在运行的替换的路径

go.mod 文件支持 gomodulerequirereplaceexclude 关键字代码补全、依赖项名称以及本地路径替换。

GoLand 建议导入包.

此外,也可以使用 RenameMove 重构。 重命名或移动由 replace 语句引用的目录时,GoLand 将相应地更改 go.mod 文件中的路径。

使用 Find Usages 查找目录在 go.mod 文件中的使用位置,并导航到它的源.

现在,您还可以通过 Project 视图调用 Find Usages,以探索特定目录路径在 go.mod 文件中的使用位置。

GoLand 高亮显示未使用和缺失的依赖项,并建议通过 Alt-Enter 使用快速修复来移除和获取这些依赖项.

在 GoLand 2020.1 中,您可以通过 Alt-Enter 获取缺失的依赖项并移除未使用的依赖项。

GoLand 发出通知,指明提交包括 go.mod 文件和本地路径的替换项。

最后但同样重要的是,如果存在本地路径替换,则新版本将在您提交之前显示一条通知,这样您就不会意外提交它们。

您无需学习如何使用的代码补全功能

通过在函数内输入 'if' 来补全错误处理模式。

GoLand 2020.1 将建议 if err != nil { ... } 来补全错误处理模式。 只需在表达式内输入 if

使用代码补全声明 'struct' 和 'interface'。

只需输入 type 关键字或 structinterface,即可更快地定义结构和接口类型。

'Fill Fields' 在冒号后添加空格。

Fill Fields 操作在格式化规则要求时会在冒号后面添加空格。 它还会在组合文字声明中语句的末尾添加逗号。

GoLand 将光标移动到右中括号后。

现在,使用地图时,代码补全会在您补全键类型后将光标移到右中括号后面。

GoLand 提供建议来补全函数返回类型中的局部变量。

对于函数的返回类型,补全功能将为局部变量和零值提供适合相应返回值类型的建议。

智能代码补全(Ctrl+Shift+Space

GoLand 建议一个指向结构初始值设定项的指针。

智能代码补全会建议一个指向结构初始值设定项的指针。

GoLand 在断言中建议兼容的类型。

它还会建议在断言和类型 switch 用例中首先使用兼容类型。

GoLand 在断言中建议分配变量的类型。

在类型断言中,它提供已赋值变量的类型。

GoLand 通过 'Smart Code Completion' 提供表达式中可能指针的列表。

最后,它提供了表达式中可能指针的建议列表。

基本代码补全(Ctrl+空格

GoLand 在注释块中补全函数的名称。

我们为注释添加了基本代码补全,这将使编写文档更加轻松! 它可为当前包声明建议名称,并为函数和方法建议参数名称。

GoLand 在表达式中建议转换。

除此之外,基本代码补全还可以建议文字和转换。

代码编辑

在输入逗号以添加下一个返回类型后,GoLand 会在 'int' 类型周围添加括号。

编写多值返回函数的签名时,GoLand 2020.1 会在逗号后面的返回类型周围添加括号。

在字符串文字中粘贴文本后,GoLand 转义双引号。

当您在字符串文字中粘贴一些文本时,IDE 会转义双引号。

要详细了解无需执行任何操作即可使用的功能,请阅读您不知道的 GoLand 编辑功能一文。

Go 1.14 支持

GoLand 2019.3 与 2020.1 在重叠接口支持方面的差异。

支持重叠接口

Go 1.14 添加了对嵌入重叠接口的支持,我们也添加了此功能! 当您使用重叠接口描述类型的不同方面时,GoLand 不会将这些方面的重复方法报告为错误。

'Go Modules' 部分中的新设置。

自动 vendoring 模式

如果模块根包含 vendor 目录,则会在 Go 1.14 中自动启用 vendoring 模式。 对于 GoLand 2020.1,我们决定为 Go 1.13 及更早版本实现类似的行为。 IDE 会自动将导入解析到 vendor/ 文件夹(如果模块中存在)。

调试器更新

在 'Debug' 窗口中通过分析器标签仔细检查 goroutine。

分析器标签支持

为了帮助您在调试或核心转储分析过程中更轻松地区分 goroutine,我们为其添加了分析器标签。

如果您想了解更多,请阅读这篇文章:如何在调试过程中查找 Goroutine

在新的 'Macros' 对话框中为 'Run/Debug Configurations' 中的 'Program arguments' 字段选择预定义宏。

宏支持

现在,可以将宏用作运行或调试应用程序的参数。 在 Run/Debug Configurations 对话框中,点击 Go Tool 中的 +Program arguments 字段即可打开新的 Macros 对话框,其中会列出要使用的可用宏。

此外,您现在还可以将配置文件存储在项目中。 在 Run/Debug Configurations 对话框的顶部,选择 Store 作为项目文件选项。

后缀补全

运行中的 '.else 后缀模板。

.else Postfix Completion 模板可以快速添加 if 语句来检查表达式是否为假。

快速修复

将 Println 转换为 Printf

按下 Alt+Enter,可立即将非格式化调用更改为格式化调用。

'Create variable’ 建议使用预期类型补全表达式。

现在,Create variable 快速修复会显示预期的类型提示,以便您更轻松地输入正确的值。

代码检查

GoLand 警告您注意非指针接收器上无效的指针方法调用,并提供了快速修复。

此新代码检查可以警告您注意非指针接收器上无效的指针方法调用,并提供了快速修复。

GoLand 警告您注意潜在的 unsafe.Pointer 误用。

如果错误使用 uintptrunsafe.Pointer 将整数转换为指针,Invalid conversions of uintptr to unsafe.Pointer 代码检查会发出警告。

GoLand 发出警告,指明 'Unmarshal' 函数中的参数必须具有指针类型。

Unmarshal is called with incorrect argument 检查可以分析对 json.Unmarshal 以及 encoding/jsonencoding/xmlencoding/gob 包的类似函数的调用。

GoLand 发出警告,指明参数必须具有指针类型。

Locks mistakenly passed by value 代码检查可帮助您避免意外复制包含锁定的值。

实时模板

'var' 和 'consts' 的声明。

我们添加了新模板来帮助您快速创建声明组。 其中包括 constsvarstypesimports。 当您使用这些模板之一时,GoLand 将在声明名称周围添加大括号。

运行中的 'fori' 模板。

fori 模板可为经典的 for 循环插入样板代码。

重构

'Extract Method' 在执行后保留原始顺序。

Extract Method 重构会保留父函数和方法参数的原始顺序。

按 Alt+Enter,'Rename' 将建议重命名用法。

Rename 重构现在会自动检测声明的重命名。 这意味着当您手动重命名声明时,IDE 将显示一个装订区域图标,此图标会自动重命名声明的所有用法。

导航

'Find Usages' 显示接口方法的用法。

Navigate to implementationsCtrl+Alt+B)和 Navigate to DeclarationUsagesCtrl+B)现在会首先显示当前项目中的结果。

此外,默认情况下,Find UsagesAlt+F7)操作现在会始终查找接口方法的用法。 要像以前一样查找当前方法的用法,请在 Alt+Shift+Ctrl+F7.

改进 VCS

新的 'Commit' 工具窗口,可在编辑器中显示差异。

新 Commit 工具窗口

现在,新的 Commit 工具窗口包含 Local ChangesShelf 标签页。 此工具窗口涵盖了与提交有关的所有任务,例如检查差异,选择要提交的文件和块,以及输入提交消息。 Commit 是位于屏幕左侧的垂直工具窗口,这样就为整个编辑器留出了显示差异的空间。

'Branches' 弹出窗口

改进了 Branches 弹出窗口

Branches 弹出窗口在多个方面进行了重新设计:

  • 我们添加了一个显式搜索字段,您可以借助此字段查找现有的远程和本地分支。
  • 现在,您可以使用 Refresh 按钮更新现有的远程分支。
  • 传入(蓝色)和传出(绿色)提交指示器已添加到状态栏。
'Rebasing Commits' 窗口

Interactively Rebase from Here 对话框

我们还大幅重新设计了 Interactively Rebase from Here。 您可以利用此对话框编辑、组合及移除之前的提交,从而让您的提交历史记录更加清晰易懂。

要调用此对话框,请转到 Git 工具窗口的 Log 标签页,在要编辑的一系列提交中选择最旧的提交,点击右键,然后选择 Interactively Rebase from Here

数据库更新

结果显示在代码编辑器中。
  • 使用 Run configurations 运行脚本文件和代码段。 这样,您可以在启动前一次运行多个文件,对它们进行重新排序,添加新文件以及运行其他程序或配置。
  • 现在,您可以在代码编辑器中查看结果。 默认情况下,此选项处于禁用状态。 要启用此功能,请转到 Settings/Preferences | Database | General | Show output results in the editor
  • 创建 SSH 隧道的配置,并在许多数据源或项目中使用。
  • 我们添加了以 Excel 格式导出数据的功能。
  • 另外,您也可以在提取程序下拉列表中选择首选数据格式。

Web 开发

按 Alt+Enter,GoLand 会建议将现有代码转换成可选链和/或空接合。

用于 JavaScript 和 TypeScript 的新智能意图和检查

使用新的智能意图和检查 (Alt+Enter) 可在编码时节省时间! 例如,您现在可以快速地将现有代码转换为可选链和/或空值合并,该语法已在最新版本的 JavaScript 和 TypeScript 中引入。

Documentation 弹出窗口显示符号的类型以及定义符号的位置。

更有帮助的快速文档

对于 JavaScript 和 TypeScript,Documentation 弹出窗口现在会显示更多有用的信息,包括符号类型和可视性的详细信息以及定义符号的位置。

更多更改

借助新的 'LightEdit Mode',可以在文本编辑器中打开文件,无需创建或加载项目。
  • JetBrains 的新字体 JetBrains Mono 默认可用。 要详细了解该字体,请访问此页面
  • 默认捆绑了 Grazie,此插件可为您在 IDE 中编写的文本提供智能的拼写和语法检查。
  • 新的 LightEdit 模式允许您在文本编辑器中打开文件,而无需创建或加载项目。 要试用这一新功能,您首先需要从 Tools | Create Command-line Launcher 创建命令行启动器,如此处所述(如果您使用的是 JetBrains Toolbox App,步骤将略有不同)。 有关如何打开文件、比较/合并文件甚至运行代码检查的详细说明,请参阅此 Web 帮助部分
  • 我们添加了新的 Zen 模式,它消除了可能的干扰,可帮助您完全专注于代码。 本质上,此模式结合了免打扰模式全屏模式。 要启用此模式,请转到 View | Appearance | Enter Zen Mode,或者从 Quick Switch Scheme 弹出窗口中选择 (Ctrl+` | View mode | Enter Zen Mode)。
  • 外部文档现在指向 https://pkg.go.dev 而不是 https://godoc.org
  • 我们恢复了默认配色方案,但采用新名称 Classic Light