みなさんこんにちは! 最近旅してますか?
私は天気が悪いわコロナで騒がしいわで旅できてません!
なんかイライラしてきたので今回はプログラムの中だけでも旅をしましょう。
というわけで、モダンな言語なのになんでか知らんがgoto文のあるGo言語でGotoキャンペーンをキメたいと思います!
次のプログラムが最終的に出力する文字列を、実行せずに処理を追って当ててみましょう!
プログラム本文
package main
import "fmt"
func main() {
fmt.Print("Go to ")
var money int = 10000
var toWhere string
var a int
goto TROUBLE
goto TRAVEL
NIGATA:
if money == 31000 {
toWhere = "fukuoka"
goto FUKUSHIMA
} else {
toWhere += "tou"
goto YOKOHAMA
}
return
TRAVEL:
fmt.Println("travel")
return
YOKOHAMA:
fmt.Println(toWhere)
return
TROUBLE:
a = 3
if a % 2 == 1{
goto KYOTO
} else {
goto TOKYO
}
return
FUKUSHIMA:
fmt.Println(toWhere)
return
TOCHIGI:
toWhere = "ret"
SAITAMA:
money += 3000
HOKKAIDO:
if money > 30000{
goto NIGATA
} else if money > 20000{
goto CHIBA
} else if money < 20000 {
goto SAITAMA
} else if money <= 12000{
goto GUNMA
}
fmt.Println("hokkaido")
return
GUNMA:
fmt.Println("gunma")
TOKYO:
fmt.Println("tokyo")
return
CHIBA:
money = 29000
goto TOCHIGI
return
FUKUOKA:
fmt.Println("fukuoka")
return
KYOTO:
toWhere = "kyoto"
for _, char := range toWhere {
if char == 'y' {
money += 5000
goto HOKKAIDO
}
if char == 't' {
money += 2000
goto FUKUOKA
}
}
fmt.Println(toWhere)
return
}
おわりに
いかがでしたか? クソコードすぎて Go to hell するところでしたね。
実際の現場でこんなコードを書いたら Go to hell してもらいます。
このクソコードを素早く読めた人は高いクソコード適性があるので、自慢がてらコメント欄にて回答をコメントしてね!