Releases

Introducing GoLand 2020.1 — Even Smarter and Faster

Hooray, GoLand 2020.1 is out!

In this new version of GoLand, you will find a variety of upgrades for Go Modules support, as well as code-editing features that require little to no interaction from the user and an expanded code completion family.

On top of that, there are new code inspections, quick-fixes, and other improvements, such as the new LightEdit mode, which lets you open a file in the text editor without creating or loading a project. The update also includes intelligent spelling and grammar checks, and new features for web development and for working with databases.

blog@2x-4

Read more about the new features on the What’s New page, which includes a full overview of the release along with GIFs and screenshots.

Download GoLand 2020.1

If you’d prefer to learn about the release by trying it out instead of reading about it, you can complete the tutorial inside the IDE. Find the Features of GoLand 2020.1 tutorial above your project list on the Welcome screen, or click the Learn tab in the editor. Please remember, though, that because of technical limitations, the tutorial does not cover all the features introduced in the release.

Please note that we no longer provide builds with JBR8, and therefore there are no patches from 2019.3.x to 2020.1. If you have an IDE with JBR8, you will see an update notification with the Update and Restart buttons, but if you try to use them you will get a 403 error. We recommend downloading the fresh version of the IDE from the website with JBR11.

What’s New Highlights

Go Modules

We’ve extended Go Modules support in many different ways. You can now:

  • Configure the default values of environment variables using a new dialog.
  • Enjoy code completion, refactorings, and navigation features in the go.mod file.
  • Fetch missing dependencies and remove unused ones on the fly.
  • Call Find Usages in the Project View to explore where the path to a particular directory is used in the go.mod file.
  • Receive notifications to help you avoid commits of replacements with local paths.

Code Completion features you don’t need to learn how to use

We say NO to boilerplate code:

  • GoLand 2020.1 will suggest if err != nil { … } to complete an error-handling pattern. Just type “if” inside the function.
  • Define struct and interface types faster simply by typing the ‘type’ keyword or “struct” and “interface”.
  • The Fill Fields action adds spaces after colons when required by the formatting rules, and it adds a comma at the end of the statement in declarations of composite literals.
  • When you are working with maps, code completion moves the cursor to behind the closing bracket after you complete a key type.
  • For the return type of the function, completion provides suggestions for local variables and zero values that will be appropriate for the corresponding return value type.

Smart Code Completion (⌃⇧Space or Ctrl+Shift+Space)

Now Smart Code Completion also suggests:

  • A pointer to struct initializer.
  • Compatible types in assertions and type switch cases first.
  • The type of the assigned variable in type assertions.
  • A list of possible pointers in the expression.

Basic Code Completion (⌃Space or Ctrl+Space)

And Basic Code Completion also suggests:

  • Completion for comments, which suggests names for the current package declarations and parameter names for functions and methods.
  • Completion for literals and conversions.

Code editing

GoLand 2020.1 will automatically add parentheses around return types after the comma when writing a signature of a multi-value return function.

Also, the upcoming version will automatically escape double-quotes when you paste text in a string literal.

Go 1.14 support

We’ve added support for embedding overlapping interfaces and enabled vendoring mode by default for Go 1.14 and also for earlier versions.

Debugger

In GoLand 2020.1, you can easily distinguish between goroutines during debugging or core dump analysis thanks to profiler labels support. Also, you can use macros as parameters to run or debug your application in the Run/Debug Configurations dialog and store the configuration file in the project to share it with your teammates.

Postfix completion

The .else Postfix Completion template quickly adds an “if” statement to check if the expression is false.

Quick-fixes

New quick-fixes are also here:

  • Change a non-formatting call to a formatting one in no time by pressing Alt+Enter.
  • The Create variable quick-fix now shows an expected type hint to make it easier to enter the right value.

Code inspections

New code inspections have arrived in the editor:

  • A new code inspection warns you about invalid calls of pointer methods on non-pointer receivers and offers a quick-fix.
  • The code inspection Invalid conversions of uintptr to unsafe.Pointer warns you about incorrect uses of uintptr and unsafe.Pointer to convert integers to pointers.
  • The inspection Unmarshal is called with incorrect argument analyzes calls to json.Unmarshal and similar functions of encoding/json, encoding/xml, and encoding/gob packages.
  • The Locks mistakenly passed by value code inspection helps you avoid accidentally copying a value that contains a lock.

Live templates

  • We’ve added four templates – consts, vars, types, and imports – to help you quickly create groups of declarations.
  • The fori template inserts the boilerplate code for the classic for-loop.

Refactorings

  • The Extract Method refactoring keeps the original order of the parent function and method parameters.
  • The Rename refactoring now detects the renaming of a declaration automatically. When you rename a declaration manually, the IDE will show a gutter icon that will offer to rename all its usages.
  • Navigate to implementations and Navigate to Declaration or Usages now show results from the current project first.
  • The Find Usages action now always looks for usages of interface methods by default.

VCS

  • The new commit tool window now incorporates the Local Changes and Shelf tabs.
  • The Branches popup has been reworked in several ways.
  • The Interactively Rebase from Here dialog has been improved.

Other

  • JetBrains Mono, a new typeface we have specially designed for developers, is now the default font.
  • Grazie, a plugin that provides intelligent spelling and grammar checks for text that you write in the IDE, is bundled by default.
  • The new LightEdit mode allows you to open a file in the text editor without creating or loading a project.
  • We’ve added the new Zen Mode, which gets rid of possible distractions and helps you focus completely on your code. This mode combines Distraction Free Mode and Full Screen Mode.
  • External Documentation now leads to https://pkg.go.dev instead of https://godoc.org.
  • The Default color scheme is back with a new name – Classic Light.

Databases updates

In the new version, while you are working with databases, you can:

  • Run script files and code snippets using Run configurations.
  • See the results in the code editor. This option is disabled by default. To turn it on, go to Settings/Preferences | Database | General | Show output results in the editor.
  • Create a configuration of the SSH tunnel and use it in many data sources or even in projects.
  • Export data to an Excel file.
  • Choose your preferred data format in the extractor drop-down.

Web development

  • New smart intentions and inspections (Alt+Enter) are available to save you time when coding in JavaScript or TypeScript.
  • The Documentation popup now shows more useful information, including details about the type and visibility of the symbol, as well as where that symbol is defined.

We are, as always, happy to hear from you! Please give us your feedback about GoLand 2020.1 by sending a request to our bug tracker or tweeting us @GoLandIDE. Thank you!

image description