Go言語の文字列の基本!文字列リテラルとエスケープシーケンスを初心者向けに解説
生徒
「Go言語で文字列ってどうやって書くんですか?」
先生
「Go言語では文字列を表すときに文字列リテラルを使います。リテラルとは、そのままソースコードに書いた文字列のことです。」
生徒
「文字列リテラルって具体的にはどんなものなんですか?」
先生
「例えば、"Hello"や`こんにちは`のようにダブルクオーテーションやバッククオートで囲んで書きます。違いについてはこれから詳しく説明しますよ。」
1. Go言語の文字列リテラルとは?
Go言語の文字列リテラルには、主に2種類あります。
- ダブルクオーテーション("")で囲む方法:改行を含めず、エスケープシーケンスを利用できる。
- バッククオート(``)で囲む方法:複数行をそのまま表現でき、エスケープシーケンスを解釈しない。
簡単に言うと、"..."は「プログラム的に特別な書き方ができる文字列」、`...`は「そのまま書いた通りの文字列」と覚えると分かりやすいです。
package main
import "fmt"
func main() {
str1 := "Hello\nWorld"
str2 := `Hello
World`
fmt.Println(str1)
fmt.Println(str2)
}
Hello
World
Hello
World
この例では、ダブルクオーテーションの方は\nが改行として解釈されますが、バッククオートの方はそのまま改行が保持されています。
2. エスケープシーケンスとは?
エスケープシーケンスとは、文字列の中で特殊な意味を持つ書き方のことです。普段そのまま書けない文字(改行やタブ、クオーテーション記号など)を表現するために使います。
Go言語でよく使うエスケープシーケンスを表にまとめました。
| エスケープシーケンス | 意味 | 例 |
|---|---|---|
| \n | 改行 | "Hello\nWorld" |
| \t | タブ(空白を広めに空ける) | "A\tB" |
| \" | ダブルクオーテーションそのもの | "She said \"Hi\"" |
| \\ | バックスラッシュそのもの | "C:\\path" |
package main
import "fmt"
func main() {
fmt.Println("Hello\nWorld") // 改行
fmt.Println("A\tB") // タブ
fmt.Println("She said \"Hi\"") // ダブルクオーテーション
fmt.Println("C:\\path") // バックスラッシュ
}
Hello
World
A B
She said "Hi"
C:\path
このように、普通に書けない文字もエスケープシーケンスを使うことで表現できます。
3. ダブルクオーテーションとバッククオートの使い分け
初心者の方は「どっちを使えばいいの?」と迷うかもしれません。目安は次の通りです。
- プログラムで改行やタブを入れたいとき → ダブルクオーテーションを使う
- 複数行のテキストをそのまま書きたいとき → バッククオートを使う
例えば、SQL文や長いHTMLのテンプレートなどをそのまま文字列として書きたい場合には、バッククオートを使うと便利です。
sql := `
SELECT id, name
FROM users
WHERE age > 20;
`
fmt.Println(sql)
SELECT id, name
FROM users
WHERE age > 20;
このように、改行やインデントを含んだ文字列をそのまま書けるのはバッククオートならではの特徴です。
4. 文字列リテラルとエスケープシーケンスの注意点
Go言語で文字列を扱うときに、次の点に注意しておきましょう。
- バッククオートではエスケープシーケンスは無効:
\nを書いてもただの文字として扱われます。 - ダブルクオーテーションでは必ずエスケープが必要:特殊な記号をそのまま書くとエラーになるので注意しましょう。
- 文字列は変更できない:Goの文字列はイミュータブル(変更不可)です。途中の文字を直接書き換えることはできません。
もし文字列を加工したいときは、新しい文字列を作るというイメージを持つと理解しやすいです。
まとめ
Go言語における文字列の基本を振り返る
この記事では、Go言語における文字列の基本として、文字列リテラルの考え方と、ダブルクオーテーションとバッククオートの違い、 さらにエスケープシーケンスの役割について順番に解説してきました。 文字列はプログラムの中で非常によく使われる要素であり、画面への出力、ログの表示、ユーザー入力の扱い、ファイルやデータベースとのやり取りなど、 さまざまな場面で登場します。 そのため、文字列の書き方を正しく理解しておくことは、Go言語を学ぶうえで避けて通れない重要なポイントです。
Go言語の文字列リテラルには、ダブルクオーテーションで囲む形式と、バッククオートで囲む形式の二種類があります。 ダブルクオーテーションは、改行やタブといったエスケープシーケンスを使える点が特徴で、 プログラムの中で動的に文字列を表現したい場合によく使われます。 一方でバッククオートは、書いた内容がそのまま文字列になるため、複数行のテキストや、 SQL文、設定ファイルの例、テンプレート文字列などを扱うときにとても便利です。 この違いを理解して使い分けることで、コードの可読性と保守性が大きく向上します。
エスケープシーケンスの役割と実践的な考え方
エスケープシーケンスは、通常の文字としては表現しにくい改行やタブ、記号などを文字列の中で表すための仕組みです。
Go言語では、\nによる改行、\tによるタブ、\"によるダブルクオーテーションの表現などがよく使われます。
これらを正しく使えるようになると、コンソール出力を見やすく整えたり、
ログを読みやすくしたりといった実践的な場面で役立ちます。
特に初心者のうちは、「なぜ改行されるのか」「なぜエラーになるのか」を一つずつ確認しながら、
エスケープシーケンスの動きを体感することが大切です。
また、バッククオートで囲まれた文字列ではエスケープシーケンスが解釈されない点も重要な注意点です。 これは一見不便に感じるかもしれませんが、 書いた内容がそのまま文字列になるという性質があるからこそ、 複雑なエスケープを考えずに長い文章やコード例を扱えるという大きな利点につながっています。 目的に応じてどちらの文字列リテラルを使うかを判断できるようになると、 Go言語での文字列操作がぐっと楽になります。
振り返り用のサンプルプログラム
ここで、文字列リテラルとエスケープシーケンスの違いを改めて確認できる、 シンプルなサンプルプログラムを見てみましょう。 実際に手を動かして実行することで、理解がより深まります。
package main
import "fmt"
func main() {
msg1 := "こんにちは\nGo言語"
msg2 := `こんにちは
Go言語`
fmt.Println(msg1)
fmt.Println(msg2)
}
このプログラムでは、同じ見た目の出力であっても、文字列の書き方が異なっています。 ダブルクオーテーションではエスケープシーケンスによって改行を表現し、 バッククオートでは改行そのものを含んだ文字列を扱っています。 この違いを理解しておくことで、場面に応じた最適な文字列の書き方を選べるようになります。
生徒
「文字列ってただ文字を書くものだと思っていましたが、 ダブルクオーテーションとバッククオートで意味が全然違うんですね。」
先生
「そうですね。特にエスケープシーケンスを理解すると、 出力の見せ方や文字列の扱い方が一気に広がりますよ。」
生徒
「SQLや長い文章を書くときはバッククオート、 プログラム的に制御したいときはダブルクオーテーション、 という使い分けが分かってきました。」
先生
「その理解で大丈夫です。基本を押さえておけば、 これから文字列操作やデータ処理を学ぶときにも必ず役に立ちます。」
【超入門】ゼロから始めるGo言語プログラミング:最速で「動くアプリ」を作るマンツーマン指導
「プログラミングの仕組み」が根本からわかる。Go言語でバックエンド開発の第一歩を。
本講座を受講することで、単なる文法の暗記ではなく、「プログラムがコンピュータの中でどう動いているか」という本質的な理解につながります。シンプルながら強力なGo言語(Golang)を通じて、現代のバックエンドエンジニアに求められる基礎体力を最短距離で身につけます。
具体的な開発内容と環境
【つくるもの】
ターミナル(黒い画面)上で動作する「対話型計算プログラム」や、データを整理して表示する「ミニ・ツール」をゼロから作成します。自分の書いたコードが形になる感動を体験してください。
【開発環境】
プロの現場でシェアNo.1のVisual Studio Code (VS Code)を使用します。インストールから日本語化、Go言語用の拡張機能設定まで、現場基準の環境を一緒に構築します。
この60分で得られる3つの理解
「なぜ動くのか」という設定の仕組みを理解し、今後の独学で詰まらない土台を作ります。
データの種類やメモリの概念など、他言語にも通じるプログラミングの本質を学びます。
ただ動くだけでなく、誰が見ても分かりやすい「綺麗なコード」を書くための考え方を伝授します。
※本講座は、将来的にバックエンドエンジニアやクラウドインフラに興味がある未経験者のためのエントリー講座です。マンツーマン形式により、あなたの理解度に合わせて進行します。
初めてのGo言語を一緒に学びましょう!