見出し画像

golang switch文のreturnの使い方、注意点について

今回はgolangのswitch文におけるreturnについて解説していきます。


switch文

Go言語にはswitch文を使うことで一つの変数から条件分岐を判定を行うことができます。

func main() {
	a := 2
	switch a {
	case 1:
		fmt.Println("×")
	case 2:
		fmt.Println("〇")
	case 3:
		fmt.Println("×")
	}
}

このように変数aの値によって処理を分岐することができます。今回はa=2のため、実行結果は


golangにおけるswitchのreturn文

関数内でswitch文を使う場合、最後にreturn文を書きたくなりますが、defaultを書いていれば不要となります。

func main() {
	a := 2
	judgement := judge(a)
	fmt.Println(judgement)
}

func judge(a int) string {
	switch a {
	case 1:
		return "×"
	case 2:
		return "〇"
	case 3:
		return "×"
	default:
		return "どれにも合致しませんでした。"
	}
}

default文を書いていればaの値によらずどこかの条件に当てはまるので、switchの外でreturnを書く必要はありません。

func judge(a int) string {
	switch a {
	case 1:
		return "×"
	case 2:
		return "〇"
	case 3:
		return "×"
	default:
		return "どれにも合致しませんでした。"
	}
	return "どれにも合致しませんでした。"
}

このようにswitchの外にreturnを書いても、到達不可となり、デッドロジックとなるのでご注意ください。


golangの案件を探すならクラウドワークス テック

・97%がリモートのお仕事
・週4日、週3日OKのお仕事多数
・登録社数74万件業界トップクラス
・2〜4週間程度でお仕事決定
・案件提案から契約締結、勤怠管理もすべてオンライン完結
・継続率90%!一人ひとりをサポート
・参画後の評価で委託料が上がる認定パートナー制度
・簡単60秒で登録


switchのreturn文の注意点

早期リターン

後続のコードや他のcaseブロックを実行させないように処理が完了次第リターンさせるように心がけましょう。

戻り値の型の一貫性

関数の戻り値の型は同じでなければなりません。
関数の定義に合った型の値を返すようにreturn文を書くようにしましょう。


fallthroughとの併用

return文とfallthrough文は併用することができません。

golangをもっと詳しくなりたい方に

初めてのGo言語

Go言語の入門から応用まではこの一冊で網羅されています。説明も順序立てて説明されており完成度の高い参考書となっています。


詳解Go言語Webアプリケーション開発

こちらはGo言語の基礎知識を得たあとに読むことをすすめる本となっています。ハンズオン形式で手を動かしながら実装をしていくことができるため、実際の開発を意識しながらGo言語を学ぶことができます。

以下の記事では他にも筆者が実際に読んでおすすめしたい本をまとめています。


【Go入門】Golang基礎入門 + 各種ライブラリ + 簡単なTodoWebアプリケーション開発(Go言語)

まだGo言語の勉強を始めていない方、全くの初心者の方にはこちらのUdemy教材が最もおすすめです。

この教材ではgolangの基礎について網羅的に学ぶことができます。ただ見て学ぶだけでなく、講座の中でアプリ作成まで行うことで学んだことの理解をさらに深めることができます。


現役シリコンバレーエンジニアが教えるGo入門 + 応用でビットコインのシストレFintechアプリの開発

個人的に最も勉強になったのは「現役シリコンバレーエンジニアが教えるGo入門 + 応用でビットコインのシストレFintechアプリの開発」という教材です。
本格的なレクチャーに入る前に、なぜGoなのか、なぜFintechなのかについて説明されていることで、Goの概念や意味について大枠から理解することができます。

以下の記事では筆者が実際に受講したおすすめUdemy教材をまとめています。

※本ページではアフィリエイトリンク(PR)が含まれています


この記事が参加している募集

この記事が気に入ったらサポートをしてみませんか?