Using extract and inline refactorings
Last modified: 12 December 2022With extract and inline refactorings, you can quickly clean up your code and make it more streamlined or explicit.
Extract a variable
Select and right-click the following code fragment:
&User{ ID: 1, Name: "Smith",}
.Navigate to Refactor | Extract | Variable.
Type u as a name for a new variable.

package main
import (
"errors"
"fmt"
"log"
)
type User struct {
ID int
Name string
}
func findUser(user string) (*User, error) {
if user != "smith" {
return nil, errors.New("user not found")
}
return &User{
ID: 1,
Name: "Smith",
}, nil
}
func main() {
user, err := findUser("smith")
if err != nil {
log.Fatalf("could not find user %s\n", "smith")
}
fmt.Printf("user found: %#v\n", user)
}
Extract methods
Select and right-click the following code fragment:
&User{ ID: 1, Name: "Smith",}
.Navigate to Refactor | Extract | Method.

Extract a constant
In the editor, select an expression or declaration of a variable you want to replace with a constant.
Press Ctrl+Alt+C to introduce a constant or select Refactor | Extract | Constant.
note
By default, GoLand uses the in-place refactoring. To use the dialog for the refactoring, open the Settings/Preferences dialog (Ctrl+Alt+S), go to Editor | Code Editing, and select the In modal dialogs refactoring option in the Refactorings area.
Select an expression you want to extract as constant and press Enter. Select the number of occurrences you want to replace and a name you want to use.

Extract functions and methods
In the editor, select an expression or its part that you want to extract. You can also position the caret within the expression, in this case GoLand offers you a list of potential code selections.
Press Ctrl+Alt+M or from the main menu, select Refactor | Extract | Extract Method.
Type a method name and press Enter.

Thanks for your feedback!