GoLand 2023.1 Help

FAQ about GoLand

General questions

Is there a GoLand Community edition?

No, as there is no way to separate GoLand functionality into free and paid tiers. You can still try GoLand by using a free 30-day trial or Early Access Program (pre-release) versions as long as they are available.

What are Early Access Program (EAP) and nightly builds?

What is the Early Access Program?

The Early Access Program lets you try out the features and enhancements in GoLand that are being developed for the next GoLand version release. These EAP features are often so new, in fact, that they are still works in progress.

EAP builds are not fully tested and might be unstable. By using EAP builds and their new features in your real-world projects and scenarios, you can help us polish them before the releases and help us and our users avoid any nasty surprises.

  • The EAP lets you try out the newest features as they become available.

  • EAP builds don’t require an active subscription, and each is free to use for 30 days from its release date.

  • EAP builds are available for download from the website, via the ToolBox App, directly from the IDE, and as a snap package (for Ubuntu).

  • We provide EAP builds until the stable release candidate is ready.

  • In each release cycle, we reward the most active evaluators with a free 1-year GoLand subscription and branded merchandise.

What are nightly builds?

Nightly builds are a special subcategory of the EAP program, and are released almost every day. They include the most recent changes, but they have not yet been tested at all.

  • The quality of nightly builds is usually below the standards of our official EAP builds.

  • Nightly builds do not come with release notes or blog post announcements.

  • During the EAP, nightly builds are free for everyone to use for 30 days after the build date. Once the EAP is over, you need to have an active GoLand license to use them.

  • Nightly builds are only available via the ToolBox application.

How to get GoLand for free or at a discount?

If you want to get a GoLand license for free or at a discount, check out the offers on the following page: Toolbox Subscription - Special Offers. If you have any questions, contact our sales support.

Free individual licenses are available for students, faculty members, and core contributors to open source projects.

Is GoLand available via the JetBrains Toolbox as part of the All Products Pack?

Yes, it is available both as a standalone IDE and as a part of the All Products Pack.

What is the difference between GoLand and the Go plugin for IntelliJ IDEA Ultimate?

Though main functionality is the same, still there are some differences:


IntelliJ IDEA Ultimate

Location of Go settings

Top level of the settings page.

Location of Go settings

Inside the Languages & Frameworks menu item.

Location of Go settings


Some plugins for Go development are not bundled, you need to install them manually

Some plugins are not compatible between GoLand and IntelliJ IDEA Ultimate (for example, the GoLand Help plugin).

Project management

To attach a folder, you navigate to File | Open and then click Attach. You can manage the project structure in the Project Structure menu. For more information about working with a project structure, see Content root.

To attach a folder you need to add it as a module. For more information about modules in IntelliJ IDEA Ultimate, see the Modules topic in the IntelliJ IDEA documentation.

Prebuilt indexes for Go SDK

Shipped with GoLand

Not shipped

Location of the IML file

GoLand stores all the settings files in the .idea directory.

When you create a Go project in IntelliJ IDEA, you can specify a directory for the .iml file. By default, it is the root directory of the project. For more information about changing the directory for the .iml file, see Change the IML file location for Go projects in IntelliJ IDEA.

Does GoLand include support for databases?

Yes. The database management functionality in GoLand is supported by the Database tools and SQL plugin. The Database tools and SQL plugin provides support of all the features that are available in DataGrip, the standalone database management environment for developers. With the plugin, you can query, create, and manage databases. Databases can work locally, on a server, or in the cloud. The plugin supports MySQL, PostgreSQL, Microsoft SQL Server, SQLite, MariaDB, Oracle, Apache Cassandra, and others. See the full list of supported vendors in Connecting to database.

In addition to Go, which web technologies does GoLand support?

In addition to tools for core Go development, GoLand supports JavaScript, TypeScript, Node.js, SQL, Databases, Docker, Kubernetes, Terraform, and other technologies.

How to leave feedback or submit a bug?

The Support and assistance topic describes how to leave feedback, report a bug, or submit a feature request.

Configuring Go development environment

What configuration is needed before the start?

To start coding, you need to install Go SDK. In most cases, GOROOT and GOPATH variables are set automatically.

If you have Go SDK installed, GoLand automatically detects and uses it.

If Go SDK is not detected, right from GoLand, you can download Go SDK from the official repository or navigate to the Go SDK directory. You can do that when you create a new project or in settings.

GOROOT is automatically set to the installation directory of Go SDK. The installation directory must include bin and src directories.

GOPATH is automatically set to $HOME/go on Unix and macOS and %USERPROFILE%/go on Windows. You can configure the global, project, and module GOPATH variable in settings (press (Ctrl+Alt+S) and navigate to Go | GOPATH).

How do I run gofmt/goimports/golang-ci on save?

For a single file, you can use the built-in import management and code formatter. Imports are managed on-the-fly. To customize import management, open settings by pressing Ctrl+Alt+S and navigate to Go | Imports.

To reformat code, press Ctrl+Alt+L. Comparing to gofmt, GoLand’s formatter works with syntactically incorrect code and can be invoked on an arbitrary block. There are other features such as automatically inserting semicolons, wrapping parameters and arguments, and others.

Also, you can use On code reformat option (Editor | Code Style | Go, click Other tab). This option lets you invoke both formatters by pressing Ctrl+Alt+L whenever you want.

Alternatively, use the Reformat code option in Actions on Save. This action is enabled by default for GoLand. When triggered by pressing Ctrl+S, the IDE runs the built-in GoLand formatter and gofmt.

  • Autosave: more information about the autosave functionality.

  • File Watchers: a topic about how to create and use file watchers.

How do I see the results of static analysis tools in the editor?

Results of static analysis tools are displayed in the Output tab of the Run tool window.

You can use the built-in or external (like golang-ci) static analysis tool.

The Output tab of the Run tool window

How do I change the output directory of the application binary (go build -o)?

Navigate to Run | Edit configurations, click the run/debug configuration that you use to run your application. In the Output directory field, specify the path that you want to use as the output directory of the application binary.

Alternatively, open your run/debug configuration and specify -o directory_path in the Go tool arguments field.

Change the output directory of the application binary

How do I provide arguments to `go build` and `go test` commands?

Navigate to Run | Edit Configurations, click the run/debug configuration that you use to run your application or your tests. In the Go tool arguments field, type a space-separated list of arguments that you want to use with go build or go test.

If you need to set build constraints, open settings by pressing Ctrl+Alt+S and navigate to Go | Build Tags & Vendoring. For more information about possible build constraints, see Build Constraints at golang.org.

How to add test flags like '-race', '-failfast', '-short', and others

Navigate to Run | Edit Configurations, click the run/debug configuration that you use to run your application or your tests. In the Go tool arguments field, specify a flag that you plan to use:

  • -race: enables data race detection. Supported only on linux/amd64, freebsd/amd64, darwin/amd64, windows/amd64, linux/ppc64le and linux/arm64 (only for 48-bit VMA).

  • -test.failfast: stops new tests after the first test failure.

  • -test.short: shortens run time of long-running tests.

  • -test.benchmem: prints memory allocation statistics for benchmarks.

Check other flags in the Go documentation at pkg.go.dev.

Run tests with test flags

How to change the name of a compiled binary?

Navigate to Run | Edit Configurations, click the run/debug configuration that you use to run your application or your tests. In the Go tool arguments field, specify -o customExecutableName.

change the name of a compiled binary

Working with projects

How do I open a VSCode project in GoLand?

Navigate to File | Open, select the folder that you want to add, and click Open.

What's the difference between workspaces and projects?

The main difference is that a workspace can contain multiple projects. In Visual Studio Code, you add multiple projects as roots to your workspace (see Multi-root Workspaces in the Visual Studio Code documentation).

GoLand does not use a workspace concept. To have a multi-root structure in GoLand, you need to define projects that you want to add as content roots (see How can I open several projects in GoLand simultaneously?).

If you have only one project in your workspace, these two concepts have no differences.

  • Content roots: read how you can work with files from several directories that do not have a common immediate parent.

  • Managing directories: see how to attach and detach directories.

How can I open several projects in GoLand simultaneously?

You can add any number of directories as content roots. To add a content root, open settings by pressing Ctrl+Alt+S and navigate to Project structure | Add Content Root.

Another way is to click File | Open, select the folder of a project that you want to add, and click Open. In the popup window, select Attach.

  • Content roots: read how you can work with files from several directories that do not have a common immediate parent.

  • Managing directories: see how to attach and detach directories.

How do I change the Go SDK for my project?

You can either download Go SDK from the official repository or navigate to your local copy.

Open settings by pressing Ctrl+Alt+S and navigate to Go | GOROOT. Click the Add button. To navigate to your local copy of Go SDK, select Local. To download Go SDK, click Download.

How do I change the GOPATH variable for my project?

Open settings by pressing Ctrl+Alt+S and navigate to Go | GOPATH. Depending on the scope that you want to apply, select the corresponding section (Global GOPATH, Project GOPATH, Module GOPATH) and click the Add button the Add button. Navigate to the directory that you want to associate with GOPATH.

You can configure GOPATH for the following scopes: Global, Project, and Module. If you specified all three scopes, GoLand selects the narrowest scope first.

How do I run or debug my application?

To run or debug your application, you can use the following approaches:

  • In the left gutter of the editor, click the Run application icon the Run Application icon and select Run <method_name> in <file_name> or Debug <method_name> in <file_name>.

  • Right-click the opened file or a method in the editor and select Run <method_name> in <file_name> Ctrl+Shift+F10 or Debug <method_name> in <file_name> Shift+F9.

  • Create a run/debug configuration. For more information about run/debug configurations, see Create a run/debug configuration.

How do I view dependencies for my project in the same window?

You can create a diagram with all the dependencies in the project. Right-click the go.mod file in your project and select Diagrams | Show Diagram.

To ensure that Go modules are enabled in the project, open settings by pressing Ctrl+Alt+S and navigate to Go | Go modules. Ensure that the Enable Go modules integration checkbox is selected.

How do I close a project?

Click File | Close Project.

How do I start with VCS integration?

VCS integration enables automatically.

To enable VCS integration manually, click VCS | Enable Version Control Integration. In the Enable Version Control Integration dialog, select the VCS that you want to use and click OK.

  • Version control: read about how to work with VCS in GoLand. Support of Git and Mercurial is bundled. To enable support for other VCS, install the corresponding VCS plugin. For more information about plugin management, see Plugins.

Working with the code editor

Can I use the VSCode key bindings in GoLand?

Install the VS Code Keymap plugin.

To install the VS Code Keymap plugin, use one of the following approaches:

  • You can download the plugin from plugins.jetbrains.com by using the following link: https://plugins.jetbrains.com/plugin/12062-vs-code-keymap/.

  • Open settings by pressing Ctrl+Alt+S and navigate to Plugins. In the search field, type VS Code Keymap. Find VS Code Keymap by JetBrains and click Install.

How do I see the documentation on a mouseover?

Hover the cursor over the code element to see documentation on it.

Documentation on mouse over

How does code completion in GoLand work?

By default, GoLand displays the code completion popup automatically as you type. Alternatively, you can press Ctrl+Space or select Code | Completion | Basic from the main menu.

  • Code completion: read about other types of code completion and how you can use them.

How can I use multiple carets/cursors?

To add or remove multiple carets, press and hold Shift+Alt and click at the next location of the caret.

Alternatively, to add multiple carets, you can press Ctrl twice, and then without releasing it, press the Up or Down arrow keys. You can also make a multiple selection by pressing Ctrl and dragging the caret.

How can I select and rename multiple elements at once?

In the editor, select an element you want to rename and press Shift+F6. Alternatively, select Refactor | Rename from the main menu.

Use the Rename refactoring to change names of symbols, files, and all the references to them throughout code.

What are the automated code refactoring tools available?

The full list of refactorings for the current context is available under the Refactor menu item.

  • Change signature changes the method or function name; adds, removes, and reorders parameters; assigns default values to new non-variadic parameters.

  • Extract refactorings extracts code fragments that can be grouped. You can extract a constant, a variable, a method, and an interface.

  • Inline refactoring moves an extracted code fragment to the calling code. An opposite to the Extract refactoring.

  • Copy refactoring copies a file, a directory, or a package to a different directory or a package.

  • Move refactoring moves source code sections to another package or a file. For example, you can use the Move refactoring to move methods to another package.

  • Code refactoring: see the section to learn more about the mentioned refactorings.

Are there any special code analysis features in GoLand?

GoLand supports gotest, gocheck, and gobench. By using these packages, you can ensure that the behavior of your code is correct and expected.

You can use profiling to get a performance analysis of your tests and benchmarks. During profiling, you see the CPU and memory usage, the frequency and duration of function and method calls. For more information about profiling, see Profiling for tests.

  • Testing: see this section for more information about creating test configurations and running tests.

  • Profiling for tests: learn about tools for profiling your tests and benchmarks.

How to disable code folding for one-line returns/panics and formatted strings?

Open settings by pressing Ctrl+Alt+S and navigate to Editor | General | Code Folding. In the Go section, clear all or some of the checkboxes that toggle code folding.

 code folding for one-line returns/panics and formatted strings

Using plugins

How do I find the plugin that I need?

Open settings by pressing Ctrl+Alt+S and navigate to Plugins. In the search field, type a plugin or technology name. Press Enter to start searching.

Alternatively, you can search for a plugin at plugins.jetbrains.com and install it manually.

How do I install the plugin that I have available on my computer?

In the Settings dialog (Ctrl+Alt+S), select Plugins and click Install Plugin from Disk. Select the plugin archive file and click OK. Restart the IDE if prompted.

I'd like to write a plugin for GoLand. Are there any instructions?

You can use any edition of GoLand to develop plugins. It provides an open API, a dedicated SDK, module, and run/debug configurations to help you.

The recommended workflow is to use Gradle. For more information, see the IntelliJ Platform SDK Developer Guide.

Can I use Visual Studio Code plugins in GoLand?

No, but you can find a similar plugin in the plugin marketplace. For details, see How do I find the plugin that I need?.

Last modified: 16 January 2023