38
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[一発ネタ] Golang で GoTo キャンペーン [クソコード]

Posted at

みなさんこんにちは! 最近旅してますか?
私は天気が悪いわコロナで騒がしいわで旅できてません!

なんかイライラしてきたので今回はプログラムの中だけでも旅をしましょう。
というわけで、モダンな言語なのになんでか知らんが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 してもらいます。
このクソコードを素早く読めた人は高いクソコード適性があるので、自慢がてらコメント欄にて回答をコメントしてね!

38
10
6

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
38
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?