Go言語のGoto文について

Go言語のgoto文 Go

goto文は指定したラベルにジャンプします。
Go言語にはtry catch raise のような例外処理構文はサポートされていませんので、goto文を使います。
複数のループ処理から抜き出したい場合、goto文を使います。

エラーの場合

下記のようにエラーが発生した場合、指定なところにジャンプできます。

func funcA() (int, string) {
    err := nil
    filename := ""
    data := ""

err, filename = GetFileName() if err != nil { goto Done }
err, data = ReadFile(filename) if err != nil { goto Done } Done: return err, data }

複数のループ処理から抜き出し

package main

import "fmt"

func main() {
for a:=0; a<5; a++ {
fmt.Println(a)
if a >= 3 {
goto Loop
}
}
Loop:
fmt.Println("test")
}

結果:

0
1
2
3
test

breakで多重のforループから抜き出し

package main

import "fmt"

func main() {
Loop:
for j:=0;j<3;j++ {
fmt.Printf("j=%d\n",j)
for a:=0;a<5;a++{
fmt.Printf("a=%d\n",a)
if a>3{
break Loop
}
}
}
}

結果:

j=0
a=0
a=1
a=2
a=3
a=4

※loopラベルが存在しない場合、breakは一つforループを終了できます。

タイトルとURLをコピーしました