カテゴリ: Go言語 更新日: 2025/12/19

Go言語の文字列の長さを取得する方法!len関数で文字数を数える基本を徹底解説

Go言語の文字列の長さ・文字数を取得する方法(len関数)
Go言語の文字列の長さ・文字数を取得する方法(len関数)

先生と生徒の会話形式で理解しよう

生徒

「Go言語で文字列の長さを調べたいときはどうしたらいいんですか?」

先生

「Go言語では、len関数を使うと簡単に文字列の長さを取得できます。」

生徒

「文字列の長さって、例えば 'Hello' なら 5 になるってことですか?」

先生

「その通りです!では、実際にサンプルコードを見ながら確認してみましょう。」

1. Go言語で文字列の長さを取得する基本

1. Go言語で文字列の長さを取得する基本
1. Go言語で文字列の長さを取得する基本

Go言語では、文字列の長さを数えるときにlen関数を使います。lenは「length(長さ)」の略で、プログラミングではよく登場する言葉です。

例えば、"Hello"という文字列を渡すと、文字数が5と返ってきます。


package main
import "fmt"

func main() {
    str := "Hello"
    fmt.Println(len(str))
}

5

このように、len関数を使うだけで簡単に文字列の長さを取得できます。

2. len関数はバイト数を返すことに注意

2. 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型)

3. 本当の文字数を数える方法(rune型)
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. 実用的な使い分け

4. 実用的な使い分け
4. 実用的な使い分け

実際にプログラムを書くときには、次のように使い分けると便利です。

  • 英数字だけの文字列lenで十分(例:"Hello")
  • 日本語や絵文字を含む文字列[]runeに変換してlenを使う

例えばユーザー名の長さを制限するとき、もし日本語も許可するなら、必ずruneを使って文字数を数えるようにしましょう。


name := "田中"
if len([]rune(name)) > 5 {
    fmt.Println("名前が長すぎます")
} else {
    fmt.Println("登録できます")
}

5. len関数と文字列処理の注意点

5. len関数と文字列処理の注意点
5. len関数と文字列処理の注意点

最後に、len関数を使うときの注意点をまとめます。

  • lenは文字数ではなくバイト数を返す
  • 日本語や絵文字は複数バイトなのでそのままでは正しく文字数を数えられない
  • 本当の文字数を取得するなら[]runeに変換してからlenを使う

特に日本語を扱うプログラムでは、この違いを理解しておかないと、思わぬ不具合が起きることがあります。

Go言語を基礎からスッキリ学びたい人や、 文法だけでなく「実用的な使い方」まで押さえたい人には、 定番の入門書がこちらです。

基礎からわかるGo言語をAmazonで見る

※ Amazon広告リンク

まとめ

まとめ
まとめ

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つの理解

1. 環境構築の完全な理解

「なぜ動くのか」という設定の仕組みを理解し、今後の独学で詰まらない土台を作ります。

2. Go言語の基本構造(変数・型)

データの種類やメモリの概念など、他言語にも通じるプログラミングの本質を学びます。

3. 読みやすいコードの書き方

ただ動くだけでなく、誰が見ても分かりやすい「綺麗なコード」を書くための考え方を伝授します。

※本講座は、将来的にバックエンドエンジニアクラウドインフラに興味がある未経験者のためのエントリー講座です。マンツーマン形式により、あなたの理解度に合わせて進行します。

セミナー画像

初めてのGo言語を一緒に学びましょう!

カテゴリの一覧へ
新着記事
New1
Go言語
Go言語のwhile的なforループの使い方!条件式ループの基本を解説
New2
Go言語
Go言語プログラムの実行方法まとめ!VSCode・ターミナルでの実行手順を解説
New3
Swift
Swift意味とは?プログラミング言語・金融・鳥の違いを徹底解説
New4
Swift
Swift 戻り値の扱い方と複数戻り値の返し方|初心者でも分かる関数の基本
人気記事
No.1
Java&Spring記事人気No1
Go言語
Go言語でリダイレクト処理を行う方法(http.Redirect)を初心者向けに解説
No.2
Java&Spring記事人気No2
Swift
Swift開発環境の構築方法を徹底解説!Xcode・Windows・Linux対応
No.3
Java&Spring記事人気No3
Kotlin
Android Studioのインストール手順と初期設定を初心者向けに完全解説!
No.4
Java&Spring記事人気No4
Kotlin
Gradleファイル(build.gradle.kts)の書き方と役割をやさしく解説!Kotlin初心者向け完全ガイド
No.5
Java&Spring記事人気No5
Go言語
Go言語のgo.modファイル完全ガイド!初心者でもわかる仕組みと書き方
No.6
Java&Spring記事人気No6
Swift
Swift Playgroundの使い方を完全解説!初心者に最適な学習環境の始め方
No.7
Java&Spring記事人気No7
Go言語
Go言語で条件式を1行で書くコツ!三項演算子の代替と短縮記法
No.8
Java&Spring記事人気No8
Kotlin
Kotlinの演算子一覧と使い方!算術・比較・論理演算子の基本を解説