Go言語で条件式を1行で書くコツ!三項演算子の代替と短縮記法
生徒
「Go言語では、if文を短く1行で書くことってできるんですか?」
先生
「いい質問ですね。Go言語には、他の言語でよく使われる『三項演算子』はありませんが、似たようなことを1行で書く方法がありますよ。」
生徒
「三項演算子ってなんですか?そして、それがなくても大丈夫なんですか?」
先生
「三項演算子とは、条件 ? 値1 : 値2という形で、条件に応じて値を切り替える書き方です。Go言語ではこの構文は使えませんが、代わりにif文を工夫して、1行で似たような処理を書く方法があります。では、わかりやすく解説していきましょう!」
1. 三項演算子とは?Go言語にはない理由も解説
まずは「三項演算子」とは何かを整理しておきましょう。他のプログラミング言語(C言語・Java・JavaScriptなど)では、条件によって値を分けたい時に、短く書ける特別な記法が用意されています。
let result = (score > 60) ? "合格" : "不合格";
この書き方は「条件が真なら左、偽なら右の値を選ぶ」という意味になります。慣れると読み書きはとても早く、プログラムを短くまとめたい時に便利です。
ところが、Go言語にはこの三項演算子がありません。「便利なのになぜ?」と思うかもしれませんが、そこには理由があります。Goの開発思想には「コードは人が読めることが大切」という考え方があるため、パッと見て意味が分かりにくい書き方を増やさないようにしているのです。
つまり、Go言語はシンプルさと読みやすさを優先しているため、三項演算子をあえて採用していません。その代わり、if文を使って同じ結果を表現できます。書き方は少し違いますが、やれることは同じなので心配はいりません。
2. Go言語で条件式を1行で書くには?代替方法を紹介
「三項演算子が使えないと不便なのでは?」と感じる方もいますが、Go言語ではif文を工夫することで、同じことをシンプルに書けます。まずは、一般的な複数行の書き方から確認してみましょう。
var result string
if score >= 60 {
result = "合格"
} else {
result = "不合格"
}
初めて見る人でも分かりやすい書き方ですが、「短くまとめたい」と感じる場面もありますよね。そこで、同じ処理を1行にまとめると、次のようになります。
if score >= 60 { result = "合格" } else { result = "不合格" }
記述量が減り、コードがスッキリします。このように、Go言語でも条件によって値を切り替える処理を短く書けるのです。
ただし、1行で書けるのは処理が簡単な場合に限られます。処理内容が多くなってくると、逆に読みづらくなることもあるため、「読みやすさ」を意識しながら使い分けるのがポイントです。
試しに、実際に動くサンプルにしてみるとよりイメージしやすくなります。
package main
import "fmt"
func main() {
score := 70
var result string
if score >= 60 { result = "合格" } else { result = "不合格" }
fmt.Println(result)
}
このプログラムでは、scoreの値が60以上かどうか判断し、結果を1行で切り替えています。難しい知識がなくても使えるので、プログラミング初心者でも安心です。
3. 簡単な実行例で学ぼう!Go言語での条件式1行記法
仕組みを知るだけではイメージしづらいので、実際に動くプログラムを見てみましょう。なるべく短く、そして初心者でも読める形で書いています。
package main
import "fmt"
func main() {
score := 75
var result string
if score >= 60 { result = "合格" } else { result = "不合格" }
fmt.Println(result)
}
実行すると、条件に応じて文字が切り替わります。この例では、scoreが75なので、条件に当てはまり「合格」と表示されます。
合格
もし値を変えてみるとどうなるでしょう? 例えば、scoreを「40」にして実行すると、次のように表示が変わります。
score := 40
var result string
if score >= 60 { result = "合格" } else { result = "不合格" }
fmt.Println(result)
不合格
このように、1行の条件式でもきちんと結果を切り替えられます。「一定の条件でメッセージを分けたい」といった場面で手軽に使える書き方です。慣れるとサッと書けるので、ちょっとした判定にはとても便利です。
4. ifの中で変数を定義する方法(短縮記法)
Go言語には、if文の中で変数を同時に宣言して使える便利な書き方があります。これは「短縮記法」と呼ばれ、ちょっとした判定ならコードを短くまとめられます。
if value := getScore(); value >= 60 {
fmt.Println("合格")
} else {
fmt.Println("不合格")
}
value := getScore() の部分で変数を作り、そのまま条件式に使っています。この変数はifとelseのブロックの中でだけ有効になるため、余計なスコープを汚さずスッキリ書けるのが特徴です。
例えば、次のように書いた場合、事前に変数を宣言する必要がありません。
package main
import "fmt"
func main() {
if score := 55; score >= 60 {
fmt.Println("合格")
} else {
fmt.Println("不合格")
}
}
この例では、scoreをifの中で宣言してそのまま条件に利用しています。小さな判定なら、この短縮記法を使うと見た目もスッキリし、読みやすさも保てます。
5. 1行で書く際の注意点
Go言語では、条件式を1行で書くことができますが、コードが読みづらくなる場合もあります。
たとえば、処理の内容が長くなったり、条件が複雑になった場合は、無理に1行で書かずに、複数行に分けて書く方が良いです。
1行にまとめられるのは、簡単な条件と簡単な処理の場合に限る、ということを覚えておきましょう。
6. Go言語で使えるその他の条件式の書き方
Go言語では、switch文を使って複数の条件分岐を書くこともできますが、1行記法では主にif-elseを工夫するのが基本です。
次のように、数値の範囲によってメッセージを変える例を見てみましょう。
score := 45
message := ""
if score >= 80 {
message = "優秀"
} else if score >= 60 {
message = "合格"
} else {
message = "再試験"
}
fmt.Println(message)
このような場合は、無理に1行にせず、読みやすく整理するのがポイントです。
まとめ
Go言語では、三項演算子のような記法は使えませんが、if文を工夫することで1行記法として同様の処理が可能です。本記事では、Go言語に三項演算子がない理由から始まり、if文を使った短縮記法や、変数の定義を含めた1行での書き方まで丁寧に解説しました。
実際にGo言語で「条件によって文字列を切り替える」コードを1行で書く方法は、以下のような形でした。
if score >= 60 { result = "合格" } else { result = "不合格" }
さらに、次のようにif文の中で変数を定義し、そのスコープ内で処理を完結させる書き方もありました。
if value := getScore(); value >= 60 {
fmt.Println("合格")
} else {
fmt.Println("不合格")
}
このような短縮記法は、Go言語の読みやすさや明快さという設計方針に沿った書き方でもあります。三項演算子のような短い構文は一見便利に見えますが、可読性の観点では混乱を招くこともあり、Goではそれを避ける設計となっているのです。
また、Go言語では複雑な条件式や処理が増える場合は、無理に1行で書かず、複数行に分けて明確に記述することが推奨されます。このバランス感覚が、Go言語を扱う上での重要なポイントといえるでしょう。
本記事を通して、Go言語における条件分岐の書き方を深く理解できたかと思います。特に、JavaScriptやC言語などの経験者がGoに入門する際には、「三項演算子が使えない」という点が引っかかることがありますが、Goらしい書き方を知ることで、シンプルかつ意図が明確なコードが書けるようになります。
ぜひ、Goのコーディングスタイルに慣れていく中で、条件式の1行記法や短縮記法を適切に使いこなしましょう。そして、コードの可読性を保ちつつ、エレガントに処理を記述する力を磨いていくことが、実践的なGoプログラマーへの第一歩になります。
生徒
「Goって三項演算子がないのは不便かなって思ってたけど、if文で1行に書けるって知ってスッキリしました!」
先生
「そうですね。Go言語は明快なコードを書くことが大事なので、あえて三項演算子を排除しているんです。代わりにif文を工夫して使えば、同じように書けますよ。」
生徒
「あと、if文の中で変数を定義できる『短縮記法』も便利ですね!関数の戻り値を一時的に使いたいときに役立ちそうです。」
先生
「そのとおりです!短縮記法は一時的なスコープで使えるので、読みやすくスマートなコードになります。ただし、複雑な処理は無理に1行にせず、適切に分けるのがGoの流儀ですよ。」
生徒
「はい!読みやすさも大事にして、Go言語らしいコードを心がけていきます!」
この記事を読んだ人からの質問
プログラミング初心者からのよくある疑問/質問を解決します
Go言語では三項演算子が使えないって本当ですか?代わりに何を使えばいいのですか?
はい、本当です。Go言語には三項演算子の構文が存在しません。その代わりに、if文を工夫して使うことで、三項演算子のような条件分岐を実現できます。
Go言語でif文を1行で書く方法にはどんな書き方がありますか?
Go言語では、if文の中で代入処理だけを行うようにすれば、波かっこを使って1行で条件式を書くことが可能です。ただし可読性にも配慮しましょう。
【超入門】ゼロから始めるGo言語プログラミング:最速で「動くアプリ」を作るマンツーマン指導
「プログラミングの仕組み」が根本からわかる。Go言語でバックエンド開発の第一歩を。
本講座を受講することで、単なる文法の暗記ではなく、「プログラムがコンピュータの中でどう動いているか」という本質的な理解につながります。シンプルながら強力なGo言語(Golang)を通じて、現代のバックエンドエンジニアに求められる基礎体力を最短距離で身につけます。
具体的な開発内容と環境
【つくるもの】
ターミナル(黒い画面)上で動作する「対話型計算プログラム」や、データを整理して表示する「ミニ・ツール」をゼロから作成します。自分の書いたコードが形になる感動を体験してください。
【開発環境】
プロの現場でシェアNo.1のVisual Studio Code (VS Code)を使用します。インストールから日本語化、Go言語用の拡張機能設定まで、現場基準の環境を一緒に構築します。
この60分で得られる3つの理解
「なぜ動くのか」という設定の仕組みを理解し、今後の独学で詰まらない土台を作ります。
データの種類やメモリの概念など、他言語にも通じるプログラミングの本質を学びます。
ただ動くだけでなく、誰が見ても分かりやすい「綺麗なコード」を書くための考え方を伝授します。
※本講座は、将来的にバックエンドエンジニアやクラウドインフラに興味がある未経験者のためのエントリー講座です。マンツーマン形式により、あなたの理解度に合わせて進行します。
初めてのGo言語を一緒に学びましょう!