Welcome to the GoLand 2020.1 Early Access Program!

The GoLand 2020.1 Early Access Program is starting. For this release, we are focusing on ease of use, performance, and reducing time wasted on boilerplate code and redundant actions in the IDE. We have also included nifty upgrades for Go Modules support, and more. You can find a brief description of what’s to come in the roadmap blog post for 2020.1.

blog@2x
You can get it via the Toolbox App, download from the website, or use a snap package (for Ubuntu). Or, right in GoLand, select Automatically check updates for Early Access Program in Preferences / Settings | Appearance & Behavior | System Settings | Updates.

Download GoLand 2020.1 EAP #1

In case you are wondering what the Early Access Program is, here’s a quick explanation:

EAP builds let you try out the latest features and enhancements in Goland that are still work in progress. The builds are not fully tested and might be unstable, but this is where you can help us. By taking these builds and features for a test drive in your real-world projects and scenarios, you can help us polish them. This way, when the final release is ready, it will work smoothly for you.

  • The EAP lets you try out all the newest features first.
  • EAP builds are free to use for 30 days from the build date. You can use this period as an extended trial of GoLand.
  • We provide EAP builds until a stable release is almost ready. For the upcoming version 2020.1, the EAP period will last roughly to the end of March.
  • In each release cycle, we recognize the most active evaluators by giving them a free 1-year GoLand subscription and an exclusive GoLand T-shirt.
  • Additionally, we provide fresh builds almost every day. So if you don’t want to wait for the official EAP build announcements, you can simply download one of these nightly builds, which are only available via the Toolbox App. Note that the quality of nightly builds is usually below our standards, and they don’t come with release notes. Like EAP builds, they also expire within 30 days of being released.

So, let’s take a look at what we’ve packed inside this first EAP build.

Go Modules

You can now fetch missed dependencies and remove unused dependencies via Alt-Enter in the go.mod file.

go-mod-file-support

Go 1.14

Go 1.14 has added support for embedding overlapping interfaces, and so have we! When you describe different aspects of a type using overlapping interfaces, GoLand will not report duplicated methods for them as errors.

Why was this feature added to the language?

The main benefit is that we can define interfaces using embedding that otherwise would need to be defined manually. Here’s an example:

Before Go 1.14, we wouldn’t have been able to add the String() method on the Employee interface since it’s already defined on the Person interface. Now, we can define it using interface embedding, which will make our code future proof in case there are updates to the Person interface.

Code Completion

We say no to boilerplate code! GoLand adds code completion for a common pattern for handling errors. Now when you type “if” inside a function, you can choose if err != nil { ... } to automatically complete it.

code-completion-handling-errors

To define interfaces and structs faster, the IDE now suggests templates for them when you type the ‘type’ keyword. The same completion is shown when you type ‘interface’ or ‘struct’.

type-keyword-completion-struct-interfaces

The Fill Fields action now adds spaces after colons when required by formatting rules, as well as the comma at the end of the statement in composite literals.

field-name-completion

Now when you are working with maps, code completion moves the cursor to behind the closing bracket after you complete a key type.

code-compltion-map

Smart Code Completion suggests a pointer to struct initializer.

code-completion-for-pointer-to-struct-initializer

Finally, code completion has gotten smarter and now suggests compatible types in assertions and type switch cases first.

type-assertion-completion

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.

multi-value return function

Also, GoLand automatically escapes double-quotes when you paste some text in a string literal.

Postfix Completion Templates

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

else-postfix-completion

Live Templates

We’ve added new consts, vars, types, and imports templates. For these templates, GoLand will add braces around the expression by default.

consts-vars-live-templates

The fori template inserts the boilerplate code for the classic for-loop.

fori-live-template

Refactorings

Implement Methods (Ctrl + I on macOS and on Windows/Linux) now allows you to specify parameter names even if they are omitted in the interface definition.

implement-methods

Performance

Navigate to implementations (⌥⌘B on macOS and Ctrl+Alt+B on Windows/Linux) and Navigate to Declaration or Usages (⌘B on macOS and Ctrl+B on Windows/Linux) now work faster since they look for implementations in the project scope first. In addition, the search results display project elements before non-project elements instead of sorting them all alphabetically.

We’ve also limited the scope for reference search for dep and Go Modules projects to improve their search performance.

JetBrains Mono Font

If you are wondering what font was used for screenshots and GIFs in this blog post — we at JetBrains have created a new typeface for developers called JetBrains Mono. Now it is available in GoLand by default, please go to Preferences / Settings | Editor | Font and choose JetBrains Mono to give it a try.

jetbrains-mono-font

Spell Checker

Some time ago we announced a plugin called Grazie. This plugin provides intelligent spelling and grammar checks for text that you write in the IDE, and it supports over 15 languages, including English, German, Russian, Chinese, and more. In this EAP build and in the upcoming 2020.1 release, Grazie is bundled by default. To learn more, please read this blog post.

Default a.k.a. Classic Light is Back in Business

Many users have asked us to add more variety to the semantic code highlighting in the Default and Darcula color schemes, and we did in version 2019.2. Some users were happy, while others were not and asked us to revert the changes.

So, to make everyone happy, we’ve decided to bring back the Default color scheme, albeit with a new name, Classic Light.

To switch to this scheme, go to Preferences/Settings | Editor | Color Scheme.

JBR8 End of Support

Starting now, we are fully moving to JetBrains Runtime 11 (JBR11), and will no longer distribute builds with JetBrains Runtime 8 (JBR8). Please note that all the GoLand 2020.1 updates, both in the IDE and the Toolbox App, will come with JBR11.

Remember that we always appreciate your feedback, so please share it with us here in the comments, on Twitter, or in our issue tracker.

This entry was posted in EAP and tagged , , , , , . Bookmark the permalink.

6 Responses to Welcome to the GoLand 2020.1 Early Access Program!

  1. Ryan says:

    Will the Go plugin for IntelliJ Ultimate also be updated during the EAP release period or will only new builds of GoLand EAP be available?

    • Florin Pățan says:

      Hi Ryan,

      The Go plugin will be updated during the EAP period but the updates will only be available in the IntelliJ IDEA Ultimate 2020.1 EAP builds.

  2. James says:

    Looking forward to Classic Light skin.

    I wasn’t sure what you changed (until now), but I am too colourblind to upgrade past 2019.1 as the new colours are too similar for me and just make it too confusing.

    I don’t find the colourblind modes helps with this much but the original skin was fine for me.

    Great to hear the original is coming back :)

  3. Dan Wolf says:

    Note that Delve just released a new 1.4 version with support for Go 1.14 and for ARM64. I don’t know if you bundle Delve, but I think I recall that you do.

Leave a Reply

Your email address will not be published. Required fields are marked *