GoLand 2026.1 Help

構文の更新のためのコードの分析

構文の更新は、Go コードを新しい言語バージョンに移行できます。 新しい Go バージョンが利用可能になると、GoLand がコードを分析し、最新の言語機能と標準ライブラリ機能を活用した更新を提案します。

構文の更新はインスペクションとして実装されています。 各インスペクションは、特定の古い構文を報告し、コードを新しい形式に書き換えるクイックフィックスを提供します。 これらの修正は安全かつ動作を維持するように設計されているため、個別に適用することも、一括で適用することもできます。

構文の更新を使用すると、既存のコードベースを最新化し、最新の Go 言語の進化に合わせて調整することができます。

構文の更新を適用する

構文の更新が利用可能な場合、GoLand はエディター内で影響を受けるコードをハイライト表示します。 インテンションのアクションメニューを使用して修正を適用するか、より広い範囲でインスペクションを実行して複数のファイルを一度に更新することもできます。

デフォルトでは、これらの更新は青い下線でハイライトされ、言語更新アイコン (Syntax update icon) でマークされます。

クイックフィックスを使用して構文の更新を適用する

  1. 変更するコード要素にキャレットを置きます。 次に、バルブアイコンをクリックして (または Alt+Enter を押して)、候補のリストを開きます。

    インテンションのプレビューが自動的に開きます。 インテンションが複雑でプレビューを生成できない場合は、インテンションの説明が表示されます。 候補リストで利用可能なインテンションにマウスポインターを合わせると、プレビューが表示されます。

  2. Enter を押すか、リストのインテンションをクリックして適用します。

    クイックフィックスの詳細については、 インテンションアクション を参照してください。

    構文更新の例

構文更新では、 構文の更新 と呼ばれる専用のインスペクション重大度レベルが使用されます。 このレベルは、他のインスペクションと同様に設定で変更できます。

構文更新の重大度を変更する

  1. Ctrl+Alt+S を押して設定を開き、 エディター | インスペクション を選択します。

  2. Go | 構文の更新 に移動します。

  3. リストからインスペクションを選択します。

  4. 重大度 リストから、新しい重大度を選択します。

  5. エディター内のハイライト リストから、エディターでコードフラグメントをハイライトするために使用するスタイルを選択します。

  6. 変更を適用して、ダイアログを閉じます。

    変更されたインスペクションは、選択したプロファイルで新しい重要度レベルになります。

    インスペクションの詳細については、 コードインスペクション を参照してください。

    構文更新の重大度を変更する

クイックフィックスを適用した後、GoLand はコードを分析して、構文の更新を適用できる他の場所を見つけることを提案します。

追加の構文更新のためにコードを分析する

  1. 構文の更新のためにコードを分析する をクリックしてください。

  2. 構文更新スコープを指定する ダイアログでスコープを選択し、 分析 をクリックします。

    その他の構文の更新についてコードを分析する

あるいは、 go.mod から構文更新のコード分析を実行することもできます。

go.mod から分析を実行する

  • go.mod で、 構文の更新のためにコードを分析する をクリックします。 Go のハイライトを表示 をクリックすると、新しい言語の概要が表示されます。

    go.mod から分析を実行する

クイックフィックスを単一の発生に適用することも、利用可能なすべての修正を一度に適用することもできます。

構文更新クイックフィックスを適用する

  • 特定の発生に修正を適用するには、 問題 ツールウィンドウを開き、発生を選択して、 修正を適用 をクリックします。

    構文更新クイックフィックスを適用する
  • 修正を一括適用するには、 問題 ツールウィンドウを開き、 構文の更新 ノードのグループを右クリックし、利用可能なクイックフィックスを選択します。 グループの 修正の適用 ボタンをクリックすることもできます。

Go 1.26 でサポートされている構文の更新

Go 1.26 では、言語と API のいくつかの改善が導入されています。 GoLand は、これらの変更を自動的に適用できるように専用のインスペクションを提供します。

new(expr) によるポインタの作成

Go 1.26 は組み込み関数 新規 を拡張し、型名だけでなく式も受け入れられるようにしました。 これにより、一時変数を導入することなく、式から直接ポインタを作成できます。

この変更により、 proto.Int64()proto.String()proto.Bool() などのポインターを作成するためだけに存在するヘルパー関数も必要なくなります。

次の前で改ページ:

birthDate := time.Date(1986, 10, 1, 0, 0, 0, 0, time.UTC) activeVal := true ageVal := calculateAge(birthDate) return UserProfile{ ID: 101, Username: "Gopher", IsActive: &activeVal, Age: &ageVal, }

次の後で改ページ:

birthDate := time.Date(1986, 10, 1, 0, 0, 0, 0, time.UTC) return UserProfile{ ID: 101, Username: "Gopher", IsActive: new(true), Age: new(calculateAge(birthDate)), }

GoLand は new() によるポインター作成インスペクションを提供します。 アドレスを取得するためだけに一時変数が作成されるケースを検出し、 new() に交換 クイックフィックスを提案します。

errors.AsType による型安全なエラーアンラップ

Go 1.26 は、 errors.As の汎用的かつ型安全な代替手段である errors.AsType を導入します。

errors.As 関数では、手動のポインタ処理が必要であり、ターゲットタイプが正しくない場合はパニックが発生する可能性があります。

問題のある使用箇所:

var cfgErr ConfigError // value, not pointer if errors.As(err, &cfgErr) { // panic fmt.Println("Config error on field:", cfgErr.Field) }

errors.AsType はターゲット型を自動的に推論し、型付けされた結果を返します。 呼び出し元が用意したポインタに依存せず、ターゲット型の不一致によってパニックが発生することはありません。

errors.AsType の使用:

if cfgErr, ok := errors.AsType[*ConfigError](err); ok { fmt.Println("Config error on field:", cfgErr.Field) }

GoLand は errors.AsType による型安全なエラーアンラッピングインスペクションを提供します。 置き換え可能な errors.As の使用状況を報告し、 errors.AsType に置き換える クイックフィックスを提供します。

2026 年 5 月 22 日