Release notes for GoLand 2020.2
Actions: the new Add Caret Per Selected Line action
The Add Caret Per Selected Line action creates carets at the end of each selected line. To invoke the action, press Alt+Shift+G.
Code formatting: wrapping for call arguments, function parameters, and composite literal elements
To configure wrapping for call arguments, function parameters, and composite literal elements, open settings by pressing Ctrl+Alt+S and navigate to
.Code formatting: intention actions for wrapping arguments
To wrap arguments in the function signature, place the caret before the opening bracket, call the intention action by pressing Alt+Enter, and select Put arguments on separate lines. To revert this action, press Alt+Enter and select Put arguments on one line.
Generics: the experimental support of type parameters
Experimental feature based on the proposed draft design at go.googlesource.com.
Type inference is not supported yet, you might see red code when passing parameters to a function with type parameters.
Useful links
How to use type parameters for generic programming: learn about the experimental support of type parameters in GoLand.
Go Modules: the focus does not switch aggressively between tool windows
When you get errors from running go list -m all
, the IDE does not switch the focus from the active tool window to the Run tab.
Go Modules: notification when you edit go.sum
The go.sum file contains the expected cryptographic checksums of the content of specific module versions. If you want to change go.sum, modify the go.mod file.
GoLand displays a notification when you edit go.sum.
Go modules: Support for the GOMODCACHE environment variable
The default storage place for the Go modules cache is $GOPATH/pkg/mod. By using the GOMODCACHE
environment variable, you can change the default location to a different one (for example, $WORK/modcache
).
Go modules: dependencies in the vendor folder resolve faster
If you have a vendor directory in your project, Go builds your application only with the dependency packages that are inside this directory. Since GoLand 2020.2, GoLand ignores the Go modules cache and uses the vendor directory only. This feature helps to discover unresolved dependencies faster.
For example, if you add an empty vendor directory manually, GoLand will instantly show all the unresolved dependencies that you can add with a quick-fix.
Go modules: autocompletion of parentheses in go.mod
For replace
, exclude
, and require
statements, GoLand adds a closing parenthesis immediately after the opening parenthesis.
Go modules: go list commands run sequentially with a progress bar
In GoLand 2020.2, go list
commands run sequentially. You can see the progress bar with the actual numbers of go list
commands in the queue.
Inspections: notification about the violation of Go conventions for struct tags
The Malformed struct tag code inspection reports struct tags that do not conform to Go conventions.
For example, this inspection reports fields that repeat values in JSON tags.
Inspections: the widget for inspections
To navigate between detected problems, you can use the Inspections widget. The Inspections widget shows the number of warnings, errors, and typos in the current file. You can go through them using the arrow icons or by pressing F2.
By using the Inspections widget, you can configure the highlighting level (None, Errors Only, or All Problems), change the severity level of inspections, and toggle the Compact View.
Useful links
Widget for inspections: learn how to configure the Inspections widget.
Inspections: malformed names of tests, benchmarks, and examples
GoLand reports malformed names of tests, benchmarks, and examples, so you do not need to call go vet
explicitly. In some cases, GoLand suggests quick-fixes. For example, to rename the Testcalculate
function to TestCalculate
due to Go conventions for names.
Inspections: string(int) conversions
The string(int)
conversion returns the UTF-8 representation of the Unicode code point and not its decimal string representation. For conversions that intend to use the code point, GoLand suggests replacing such conversions with string(rune(x))
. Alternatively, you can convert an integer to a string by using the strconv.Itoa
method or its equivalents from the strconv
package.
Intention actions: preview of intention actions
For some intention actions, you can open a preview by pressing Ctrl+Shift+I.
Navigation: highlight references from comments to related package-level declarations
If you click the reference in comments, you can navigate to related package-level declarations in the same package. Also, you can use the Navigate to Declaration and Usage action (Ctrl+B) for such references.
Names of methods, functions, and structs in comments are highlighted.
GoLand highlights references to exported symbols only. Words are resolved to package-level declarations in the same package. Two words separated with a dot are treated either as Type.Method
or as package.SymbolName
.
GoLand highlights references only if the name is unique to reduce the number of false positives.
Navigation: the Find Usages action searches for embedded structs and interfaces
The Find Usages action searches for embedded structs and interfaces.
Plugins: the Swagger plugin
GoLand supports the Swagger plugin. By using the Swagger plugin, you can edit Swagger and Open API specification files.
Note that you need a local JAR with swagger-codegen or an HTTP link to swagger-codegen on Maven Central.
Useful links
Plugins: learn more about plugins.
Project: the Save Project as Template action
You can save a project as a template. Later, you can create projects that are based on the saved project. For example, you can use this template for the projects that are nearly identical to the template project.
Useful links
Save projects as templates: learn more about this functionality.
Quick-fixes: the Unpack slice quick-fix
The Unpack slice quick-fix converts a slice to a variadic variable.
Refactorings: refactorings to work with variadic arguments
Use the Introduce Variable refactoring (Ctrl+Alt+V) to extract variadic arguments into a new slice variable.
To reverse the Introduce Variable refactoring, use the Inline refactoring (Ctrl+Alt+N).
Useful links
Extract/Introduce variable: learn more about the Extract Variable refactoring.
Inline: learn more about the Inline refactoring.
Tool windows: the Problems tool window and the Inspections Widget are introduced
The Problems tool window displays a list of warnings and errors in the current file. You can fix these issue by using an intention action. You can call the intention action by pressing Alt+Enter. Alternatively, right-click the issue and select Show Quick Fixes.
Useful links
Running inspections: learn more about running inspections and the widget for inspections.
VCS: Merge, Pull, and Rebase dialogs
GoLand now includes new Merge, Pull, and Rebase dialogs.
WSL support: WSL2 support for Git on Windows
GoLand supports Git from the Windows Subsystem for Linux 2 (WSL2), which is available in Windows 10 version 2004.
If Git is not installed on Windows, GoLand searches for Git in WSL and use it from there. Also, GoLand automatically switches to Git from WSL for projects that are opened when you use the \wsl$ path.