GoLand 2023.3 comes with several significant additions:
returns
and panics
, and other code.
slice
expressions, code insight for custom printf
-like functions,
and enhancement to the debugger.
GoLand 2023.3 also offers updates for Docker and Kubernetes integrations, VCS, and some tweaks for web development. Dive right in!
The latest updates include enhanced code generation directly within the editor, context-aware AI chat that answers project-related queries without requiring you to copy code, and project-aware AI actions that use extended context to provide more comprehensive results. A new diff viewer makes it easier to identify changes the AI actions have made to your code.
Use AI Assistant in GoLand as a supplemental feature with a JetBrains AI Service subscription.
Naming is hard! That’s why the AI Assistant in GoLand will suggest some name ideas for functions to improve readability.
Documenting your code is a mundane routine, albeit a necessary one. The Write documentation action facilitates well-commented code in just a couple of clicks.
AI Assistant can help you to create a test for a specific function or method and will suggest adding more test cases after the initial test class has been created.
This quick-fix allows you to type a non-existing function name and then generate implementation in a package of your choice.
The 2023.3 release comes with the first part of the highly anticipated Extract Parameter refactoring. The Create Parameter quick-fix for unresolved references allows you to select an unresolved reference and use the quick-fix option to create a parameter. It also allows changing its type if it's not precise enough, providing a default value, and changing the calls with the default value.
GoLand now supports Dev Containers, allowing you to use containers as a full-featured development environment to edit, build, and run your projects. Dev Containers can be run remotely via an SSH connection or locally using Docker.
GoLand 2023.3 provides support for Dev Container Features, providing a convenient and fast way to integrate additional tools, runtimes, and libraries essential for development.
We’ve also introduced support for Docker Compose within Dev Containers, enabling the seamless launch of both the main container with the IDE and any dependent containers, such as those with databases or message queues, which are useful during the development process.
returns
and panics
For one-line returns
and panics
, there will now be an option
to use the new concise code folding style, which will look much closer to the original code.
The new folding syntax is enabled by default.
We use a similar approach for case
clauses: the upward arrow is removed,
and only the double colon is folded.
returns
As we’ve done for one-line returns
and panics
, we’ve also
enabled folding for functions with a single return
statement.
To improve the readability of error-handling code, GoLand automatically folds
error-handling if
blocks.
For if
blocks with error-handling code, GoLand also folds
all single statements, for example, with calls to logging.
string
formatting
We’ve disabled code folding for string
formatting to make the relevant syntax
more visible. What’s more, the new approach to code folding allows you
to edit code blocks without having to expand them.
Switch
generation for enums
GoLand can now assist in writing switch
statements for enums. It suggests
generating cases for all the values in completion.
iota
The inspection helps you keep track of switch
expressions
for iota
constants. The inspection warns you about cases not covered
by switch
and provides two solutions: to add the missing clauses
or to add a default clause.
The feature allows you to see exactly what code has been reached in single
or multiple runs. It also helps detect dead code.
Previously, it worked only for test runs; now, you can run
the main
function with Coverage too.
slice
expressions
Slice
expressions can be confusing, especially those with three indices.
GoLand will now show you hints while you’re building slices.
printf
-like functions
GoLand provides a lot of useful features for standard printf
-like functions:
highlighting of placeholders, error detection, code foldings, etc.
Now, all these features are available for user-defined printf
-like functions.
GoLand 2023.3 introduces a refined data flow analyzer based on the engine used in CLion.
This feature more broadly detects code problems such as potential nil
dereference,
incorrect or missing error handling, and always true/false
conditions.
Please note that this feature is currently in early access and is disabled by default. You can enable it in Settings | Editor | Inspections | Go | Data Flow Analysis (experimental) and provide us with your feedback!
asdf is a CLI tool that lets you manage multiple language runtime versions. In response
to feedback from the community, we’ve decided to include asdf support in current version.
With this release, GoLand will check the Go version in the .tool-versions
file and use the appropriate Go version for the selected project.
Go 1.21 and later take better care not to miscompile code that requires
an even newer version of Go. Specifically, the go
line in go.mod
now specifies a minimum required Go toolchain version, while in previous releases,
it was a mostly unenforced suggestion.
Now, GoLand fully supports this flow and automatically downloads the SDK version specified
in a go.mod
file using go
or toolchain
line.
The specified version is also automatically set in Go project settings.
GoLand 2023.3 migrated to the modern IntelliJ Platform API, so it does not run
go list -m
for a second time if the project contains vendor directories.
More effective utilization of caches enhances the performance of projects
containing many Go modules.
A new Run to Cursor inlay option that offers a quick way to navigate to a specific line of code while debugging. Once your program is suspended, you can hover over the line of code to which you wish to continue execution. You can then utilize the Run to Cursor popup to execute your code until it reaches the line where your cursor is placed.
Expanding the GitLab integration, we’ve added support for GitLab snippets. You can now create public or private snippets directly within the IDE.
Now, you can easily add kubeconfig
contexts from clusters located
in directories outside the required system. The project will include links
to kubeconfig
files, making these clusters available while you work
on your project. The kubeconfig
contents added in this way won’t be
copied to or modified in the system (~/.kube/config)
. This feature
is especially useful when you frequently add and remove Kubernetes clusters
from cloud or on-premises environments.
Learn more.
When you start using the Kubernetes plugin, you may need to install kubectl and/or Helm. If you don’t have them on your machine already, the IDE will offer to automatically install them.
Telepresence allows you to debug the microservices of a Kubernetes application locally, as if your workstation were a part of the cluster. In this release, we’ve made the Telepresence workflow more accessible by moving it to the cluster’s context menu. We've also streamlined interception management for a smoother debugging experience.
import
block in Terraform
GoLand supports top-level import
blocks from version 1.5 of the Terraform
configuration language. import
blocks allow you to bring the current
infrastructure under Terraform’s management. When import
is used
within a code block, it becomes part of the standard plan and apply cycle and ceases
to be a state operation. Terraform performs automatic code generation
for imported resources, saving you time when developing infrastructure as code.
GoLand 2023.3 solves some of the inconsistencies encountered when adding
import type
statements. We’ve added the option to
configure the usage of the TypeScript import type statement
or type specifier when importing a type. We’ve also improved the behavior
for the exports
field of package.json for TypeScript files.
We’ve improved the Structure view for better navigation within large
.http
files. This update also introduces
color-coded labels for request types and provides a clearer listing
of their contents. We’ve also added support for declaring variables
using @
and authentication with OAuth 2.0 password
and client credential grant types.
GoLand will automatically detect your Cypress and Playwright tests and let you run and debug them with a single mouse click. The support also includes the ability to explore the results and find issues by navigating the Test Tree.
This is a revamped way to review code changes. Now, instead of going through each file one by one, you can see all of the modified files from a changeset in a single, scrollable frame. Learn more.