Go/goto
表示
< Go
Goのgotoキーワードについて
[編集]Goのgotoキーワードは、プログラムの実行フローを特定のラベル位置に無条件に転送するための制御構文です。
Goでは、goto文を使用して、同じ関数内の別の場所にジャンプすることができます。ただし、他の多くの現代的なプログラミング言語と同様に、使用が制限されています。
基本的な構文
[編集]goto Label // ... Label: // ここに処理を書く
特徴と制限
[編集]- 同一関数内のみ:
gotoは同じ関数内のラベルにのみジャンプできます。関数をまたいだジャンプはできません。 - 変数スコープの制限:
gotoを使用して変数宣言をスキップすることはできません。 - ループの考慮:ループの中から外へジャンプしたり、外からループの中にジャンプしたりする場合は、ループ変数のスコープに注意が必要です。
使用例
[編集]package main import "fmt" func main() { i := 0 start: if i >= 5 { goto end } fmt.Println(i) i++ goto start end: fmt.Println("終了") }
この例では、gotoを使ってループを実装しています。通常はfor文を使用する方が適切ですが、例として示しています。
使用に関する注意点
[編集]gotoは一般的にモダンなプログラミングでは推奨されません。乱用するとコードが「スパゲッティコード」になりやすく、プログラムの流れが追いにくくなります。Goでは以下のような限られた状況で使われることがあります:
- 複数のネストされた条件やループからの脱出
- エラーハンドリングの一部として、特定のクリーンアップコードに直接ジャンプする場合
多くの場合、break、continue、returnなどの他の制御構文や、適切な関数分割によって、より明確なコードを書くことができます。