Go言語の文字列の長さを取得する方法!len関数で文字数を数える基本を徹底解説
生徒
「Go言語で文字列の長さを調べたいときはどうしたらいいんですか?」
先生
「Go言語では、len関数を使うと簡単に文字列の長さを取得できます。」
生徒
「文字列の長さって、例えば 'Hello' なら 5 になるってことですか?」
先生
「その通りです!では、実際にサンプルコードを見ながら確認してみましょう。」
1. Go言語で文字列の長さを取得する基本
Go言語では、文字列の長さを数えるときにlen関数を使います。lenは「length(長さ)」の略で、プログラミングではよく登場する言葉です。
例えば、"Hello"という文字列を渡すと、文字数が5と返ってきます。
package main
import "fmt"
func main() {
str := "Hello"
fmt.Println(len(str))
}
5
このように、len関数を使うだけで簡単に文字列の長さを取得できます。
2. len関数はバイト数を返すことに注意
ここで重要なポイントがあります。Go言語の文字列は内部的にはUTF-8という文字コードで表現されています。UTF-8では、アルファベットは1バイトですが、日本語や絵文字は複数バイトで表現されます。
そのため、len関数は「文字数」ではなく「バイト数」を返すのです。
package main
import "fmt"
func main() {
str := "こんにちは"
fmt.Println(len(str))
}
15
「こんにちは」は5文字ですが、UTF-8では1文字が3バイトで表現されるため、len(str)の結果は15になります。初心者の方はここでよく混乱するので注意しましょう。
3. 本当の文字数を数える方法(rune型)
「バイト数ではなく本当の文字数を数えたい」と思ったときは、文字列をruneスライスに変換してからlen関数を使います。
runeとは、Go言語における文字の型で、1文字をユニコードコードポイントとして扱います。簡単に言うと「見た目の1文字」を扱える型です。
package main
import "fmt"
func main() {
str := "こんにちは"
runes := []rune(str)
fmt.Println(len(runes))
}
5
このように、runeに変換すれば「こんにちは」はきちんと5文字として数えることができます。
4. 実用的な使い分け
実際にプログラムを書くときには、次のように使い分けると便利です。
- 英数字だけの文字列 →
lenで十分(例:"Hello") - 日本語や絵文字を含む文字列 →
[]runeに変換してlenを使う
例えばユーザー名の長さを制限するとき、もし日本語も許可するなら、必ずruneを使って文字数を数えるようにしましょう。
name := "田中"
if len([]rune(name)) > 5 {
fmt.Println("名前が長すぎます")
} else {
fmt.Println("登録できます")
}
5. len関数と文字列処理の注意点
最後に、len関数を使うときの注意点をまとめます。
lenは文字数ではなくバイト数を返す- 日本語や絵文字は複数バイトなのでそのままでは正しく文字数を数えられない
- 本当の文字数を取得するなら
[]runeに変換してからlenを使う
特に日本語を扱うプログラムでは、この違いを理解しておかないと、思わぬ不具合が起きることがあります。
まとめ
Go言語で文字列の長さを扱うときの考え方
この記事では、Go言語における文字列の長さの取得方法について、len関数を中心に詳しく見てきました。Go言語はシンプルで高速な言語ですが、文字列の扱いには他の言語とは異なる特徴があります。その代表例が、len関数が返す値は「文字数」ではなく「バイト数」であるという点です。
英語や数字だけを扱うプログラムでは、この違いを意識せずに使える場面も多いですが、日本語や絵文字を含む文字列を扱う場合には、この仕様を理解していないと意図しない結果につながります。特に入力チェックや文字数制限を行う処理では、見た目の文字数と内部のバイト数の違いを正しく理解することが重要です。
len関数の役割とUTF-8文字列の仕組み
Go言語の文字列はUTF-8でエンコードされており、アルファベットは1バイト、日本語は3バイト、絵文字はさらに多くのバイト数で表現されます。そのため、len関数は文字列の「長さ」を返しますが、それは人が数える文字数とは一致しないことがあります。
この仕組みを理解しておくことで、「なぜ日本語を含む文字列でlenの結果が大きくなるのか」という疑問が解消されます。Go言語で文字列処理を行ううえで、UTF-8とバイト数の考え方は避けて通れない基礎知識です。
rune型を使った正しい文字数の数え方
見た目上の文字数を正しく数えたい場合は、文字列を[]runeに変換してからlen関数を使います。runeはGo言語における文字を表す型で、ユニコードのコードポイント単位で文字を扱えます。
この方法を使えば、日本語や絵文字を含む文字列でも、人が認識する「一文字」を基準にした文字数を取得できます。ユーザー名、コメント、入力フォームなど、文字数制限がある場面では必須のテクニックと言えるでしょう。
文字列長チェックのサンプルプログラム
package main
import "fmt"
func main() {
message := "こんにちはGo言語"
if len([]rune(message)) > 10 {
fmt.Println("文字数が多すぎます")
} else {
fmt.Println("文字数は問題ありません")
}
}
このサンプルでは、runeスライスに変換してから文字数をチェックしています。日本語を含む文字列でも、見た目通りの文字数で判定できるため、実務で安心して使える書き方です。単にlen関数を使うだけでなく、どの単位で数えたいのかを意識することが、Go言語での文字列処理を正しく行うコツです。
実務での使い分けを意識する
実際の開発現場では、すべての場面でruneを使う必要はありません。英数字のみを扱うIDや固定フォーマットのデータでは、len関数だけで十分なケースも多くあります。一方で、ユーザーが自由に入力できるテキストを扱う場合には、runeを使った文字数カウントを選ぶことで、不具合やクレームを未然に防げます。
Go言語の文字列処理では、「何を数えたいのか」「誰に見せる結果なのか」を意識して実装することが大切です。
生徒「len関数って、文字数を返すと思っていましたが、実はバイト数なんですね。」
先生「そうです。そこがGo言語の文字列で最初につまずきやすいポイントです。」
生徒「日本語を扱うときは、runeに変換しないと正しく数えられない理由が分かりました。」
先生「その理解ができれば、入力チェックや文字数制限も安心して実装できます。」
生徒「英数字だけならlen、日本語があるならrune、という使い分けですね。」
先生「その通りです。Go言語では仕様を理解した上で使い分けることが大切ですよ。」
今回学んだGo言語の文字列の長さ取得方法は、初心者が必ず押さえておきたい基礎知識です。len関数の役割とUTF-8の仕組み、そしてruneを使った正しい文字数の数え方を理解することで、実践的で信頼性の高いプログラムが書けるようになります。文字列処理は多くの場面で使われるため、今回の内容をしっかり身につけて、今後のGo言語学習や開発に活かしていきましょう。
【超入門】ゼロから始めるGo言語プログラミング:最速で「動くアプリ」を作るマンツーマン指導
「プログラミングの仕組み」が根本からわかる。Go言語でバックエンド開発の第一歩を。
本講座を受講することで、単なる文法の暗記ではなく、「プログラムがコンピュータの中でどう動いているか」という本質的な理解につながります。シンプルながら強力なGo言語(Golang)を通じて、現代のバックエンドエンジニアに求められる基礎体力を最短距離で身につけます。
具体的な開発内容と環境
【つくるもの】
ターミナル(黒い画面)上で動作する「対話型計算プログラム」や、データを整理して表示する「ミニ・ツール」をゼロから作成します。自分の書いたコードが形になる感動を体験してください。
【開発環境】
プロの現場でシェアNo.1のVisual Studio Code (VS Code)を使用します。インストールから日本語化、Go言語用の拡張機能設定まで、現場基準の環境を一緒に構築します。
この60分で得られる3つの理解
「なぜ動くのか」という設定の仕組みを理解し、今後の独学で詰まらない土台を作ります。
データの種類やメモリの概念など、他言語にも通じるプログラミングの本質を学びます。
ただ動くだけでなく、誰が見ても分かりやすい「綺麗なコード」を書くための考え方を伝授します。
※本講座は、将来的にバックエンドエンジニアやクラウドインフラに興味がある未経験者のためのエントリー講座です。マンツーマン形式により、あなたの理解度に合わせて進行します。
初めてのGo言語を一緒に学びましょう!