カテゴリ: Go言語 更新日: 2026/08/06

Go言語の文字列の部分文字列(スライス)取得方法を徹底解説!初心者でも簡単に理解できる使い方

Go言語の文字列の部分文字列(スライス)取得方法
Go言語の文字列の部分文字列(スライス)取得方法

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

生徒

「Go言語で文字列の一部だけを取り出す方法ってありますか?」

先生

「はい、Go言語では文字列をスライスすることで部分文字列を取り出すことができます。」

生徒

「スライスって聞いたことがありますが、どういう意味なんですか?」

先生

「スライスとは配列や文字列の一部を切り出す操作のことです。Goではとてもよく使われる機能なので、順番に見ていきましょう。」

1. Go言語における文字列とスライスの基本

1. Go言語における文字列とスライスの基本
1. Go言語における文字列とスライスの基本

Go言語で文字列を扱うときには string 型を使います。 文字列は一見すると「文字の集まり」に見えますが、Go言語の内部では バイト列として管理されている点が大きな特徴です。 この仕組みを理解しておくと、後で出てくるスライス操作や日本語文字列の扱いも スムーズに理解できるようになります。

文字列の一部だけを取り出したいときに使うのが「スライス」です。 スライスとは、文字列や配列の一部分を指定して切り出す操作のことを指します。 たとえば文章の先頭だけを取得したり、決まった位置から後ろだけを取り出したりといった処理が、 スライスを使うことで簡単に書けるようになります。

プログラミング未経験の方は少し難しく感じるかもしれませんが、 イメージとしては「文字列に番号が振られていて、その範囲を指定して取り出す」と考えると分かりやすいです。 Go言語では、この番号を「インデックス」と呼び、0から順番に数えていきます。


package main

import "fmt"

func main() {
    text := "Hello"
    fmt.Println(text) // 元の文字列を表示
}

この例では、まず string 型の変数に文字列を代入しています。 これが、これからスライス操作を行う元になる文字列です。 次の章からは、この文字列をどのように切り出して部分文字列を取得するのかを、 実際のコードを使って詳しく見ていきます。

2. 部分文字列を取得する基本構文

2. 部分文字列を取得する基本構文
2. 部分文字列を取得する基本構文

Go言語で文字列の一部(部分文字列)を取り出すときは、スライス記法を使います。 基本の形はとてもシンプルで、取り出したい「範囲」を数字で指定します。


text[start:end]

start は切り出しを始める位置、end は切り出しを終える位置です。 ここで大事なのは、end の位置の文字は含まれないというルールです。 つまり「start から end の手前まで」が取り出されます。 このルールを覚えておくと、1文字だけ取りたいときも迷いにくくなります。

もうひとつのポイントは、位置を表す数字(インデックス)は 0 から始まることです。 たとえば「Hello」なら、Hが0、eが1、lが2…という順番になります。 「何文字目か」ではなく「0から数えた位置」と考えると分かりやすいです。


package main

import "fmt"

func main() {
    text := "Hello"

    fmt.Println(text[0:2]) // He(0から2の手前まで)
    fmt.Println(text[1:4]) // ell(1から4の手前まで)
    fmt.Println(text[4:5]) // o(1文字だけ取り出す例)
}

He
ell
o

このように、スライスの範囲を変えるだけで、必要な部分文字列を自由に取り出せます。 まずは短い英単語で「どこからどこまで取られるのか」を試してみると、感覚がつかみやすいです。

3. 部分文字列を取り出す具体例

3. 部分文字列を取り出す具体例
3. 部分文字列を取り出す具体例

それでは実際に、Go言語のスライス記法を使って部分文字列を取り出してみましょう。 ここでは「Hello, World!」という文字列から、前半の Hello と後半の World を切り出します。 いきなり難しく考えず、「取り出したい範囲の番号を指定するだけ」と思ってOKです。

コツは、取り出したい文字の最後の位置より1つ先end にすることです。 たとえば Hello は5文字なので、先頭の0から「5の手前」まで指定すると Hello になります。 また、カンマとスペースが間に入っているので、World を取るときは開始位置がずれないように注意します。


package main

import "fmt"

func main() {
    text := "Hello, World!"

    part1 := text[0:5]   // 「Hello」
    part2 := text[7:12]  // 「World」

    fmt.Println(part1)
    fmt.Println(part2)
}

Hello
World

この例では、text[0:5] が先頭から5文字分を切り出し、text[7:12] が7番目から12番目の手前までを切り出しています。 数字を少し変えるだけで、先頭だけ・途中だけ・末尾だけなど、いろいろな部分文字列を取り出せるようになります。 まずは同じ文字列で範囲を1つずつ動かしてみると、スライスの感覚がつかみやすいです。

4. 省略記法を使った部分文字列の取得

4. 省略記法を使った部分文字列の取得
4. 省略記法を使った部分文字列の取得

Go言語では、スライスの startend を省略して書くことができます。 毎回数字を全部書かなくていいので、文字列の部分文字列(スライス)をサッと取り出したいときに便利です。 「先頭から」「最後まで」といった、よくある切り出しが短く書けるのがポイントです。

  • text[:end]:先頭から end の手前までを取得(start を省略=0扱い)
  • text[start:]start から最後までを取得(end を省略=末尾まで)
  • text[:]:全文字列を取得(「そのまま使う」イメージ)

省略してもルールは同じで、end は含まれません。 そのため text[:4] は「0〜3番目まで」を意味します。 初心者のうちは、実行結果を見ながら「どこまで取れているか」を確認すると理解が早いです。


package main

import "fmt"

func main() {
    text := "Golang"

    fmt.Println(text[:4])  // Gola(先頭から4の手前まで)
    fmt.Println(text[2:])  // lang(2から最後まで)
    fmt.Println(text[:])   // Golang(全部)
}

Gola
lang
Golang

実務でも「先頭数文字だけチェックしたい」「末尾の拡張子だけ取りたい」など、前後どちらかが決まっている場面はよくあります。 省略記法を覚えておくと、Go言語の文字列操作が読みやすくなり、コードを書く手間も減ります。

5. 日本語の文字列を扱うときの注意点

5. 日本語の文字列を扱うときの注意点
5. 日本語の文字列を扱うときの注意点

Go言語の文字列は内部的に UTF-8 という形式で管理されています。 英数字の場合は1文字=1バイトですが、日本語のひらがなや漢字は1文字が複数バイトになるのが特徴です。 この違いを知らずにスライスを使うと、思わぬトラブルにつながることがあります。

たとえば日本語の文字列を text[0:3] のように単純に切り出すと、 「3文字」ではなく「3バイト分」が切り出されます。 その結果、文字の途中で分断されてしまい、文字化けした表示になることがあります。 初心者の方が日本語文字列でつまずきやすいポイントなので、ここはしっかり押さえておきましょう。

日本語を1文字単位で安全に扱いたい場合は、文字列をそのままスライスするのではなく、 []rune に変換してから操作する方法が一般的です。 rune は「1文字」を表す型なので、日本語でも安心して部分文字列を取得できます。


package main

import "fmt"

func main() {
    text := "こんにちは"

    // rune に変換してからスライスする
    runes := []rune(text)
    part := string(runes[0:3])

    fmt.Println(part)
}

こんにち

この例では、「こんにちは」から先頭の3文字だけを正しく取り出しています。 日本語を含む文字列を扱うときは、 「stringはバイト単位」「runeは文字単位」という違いを意識するだけで、 スライス操作の失敗を防ぐことができます。

6. 部分文字列の応用例

6. 部分文字列の応用例
6. 部分文字列の応用例

部分文字列(スライス)の取得は、練習用の例だけでなく、実際のプログラムでもよく登場します。 とくに分かりやすいのが、ユーザーが入力したメールアドレスやURLのように、 「決まった記号の前後」を取り出したい場面です。 文字列の一部を切り出せるようになると、入力チェックやデータ整理がぐっと楽になります。

たとえばメールアドレスなら、@ より後ろがドメイン部分です。 今回は説明をシンプルにするため、user@example.com のように user が4文字で固定だと仮定して、スライスでドメインを取り出してみます。 「この位置から最後まで」という形は、実務でもよく使うので覚えておくと便利です。


package main

import "fmt"

func main() {
    email := "user@example.com"

    // "user@" の5文字分を飛ばして、残り(ドメイン)を取得
    domain := email[5:]

    fmt.Println("Domain:", domain)
}

Domain: example.com

この例では email[5:] で「5番目から最後まで」を取り出しています。 省略記法と組み合わせることで、短いコードで目的の部分文字列が作れます。 ただし、実際の入力は長さが固定とは限らないので、 まずは「スライスで切り出せる」感覚をつかみ、必要に応じて位置の決め方を工夫していくのがコツです。

まとめ

まとめ
まとめ

Go言語における文字列スライスと部分文字列取得の総まとめ

この記事では、Go言語で文字列の一部を取り出す「部分文字列」や「スライス」の基本から応用までを、初心者の方にも分かりやすい形で解説してきました。 Go言語の文字列は一見すると単なる文字の並びに見えますが、内部ではバイト列として管理されているという特徴があります。 この仕組みを理解することが、正しい文字列操作や安全なスライス処理につながります。

基本となるスライス記法は text[start:end] という形で、開始位置と終了位置を指定するだけで部分文字列を取得できます。 このとき、終了位置の文字は含まれないというルールや、インデックスは0から始まるという点は、Go言語で文字列操作を行う上でとても重要です。 これらのルールをしっかり押さえておくことで、思い通りの部分文字列を正確に取り出せるようになります。

また、開始位置や終了位置を省略できる省略記法を使うことで、先頭からの取得や末尾までの取得なども簡潔に書けるようになります。 この省略記法はコードを読みやすくし、処理内容を直感的に理解しやすくしてくれるため、実務でもよく使われます。 短いサンプルコードを試しながら、どのような範囲が切り出されるのかを確認することが、理解を深める近道です。

日本語文字列とUTF-8を意識したスライス操作

Go言語で特に注意が必要なのが、日本語文字列を扱う場合です。 日本語のひらがなや漢字はUTF-8では複数バイトで表現されるため、英数字と同じ感覚でスライスすると文字化けが起こる可能性があります。 そのため、日本語の部分文字列を安全に扱うには、[]rune に変換してからスライスする方法が一般的です。

runeはUnicodeの文字単位で扱われるため、見た目通りの文字数で部分文字列を切り出せます。 初心者のうちは「日本語を扱うときは rune に変換する」という意識を持っておくと、予期せぬバグを防ぎやすくなります。 特にユーザー入力や画面表示に関わる処理では、この点を理解しているかどうかで品質に大きな差が出ます。


// まとめ用の日本語スライス例
text := "こんにちは"
runes := []rune(text)
result := string(runes[0:2])
fmt.Println(result)

このように、Go言語の文字列スライスは単純な構文でありながら、内部構造を理解して使うことで、より安全で柔軟な文字列処理が可能になります。 メールアドレスの分解やURLの解析、入力データのチェックなど、部分文字列の取得は多くの場面で活用されます。 基本をしっかり身につけておくことで、さまざまな応用処理にも対応できるようになります。

先生と生徒の振り返り会話

生徒

「Go言語の文字列って、ただの文字の並びだと思っていましたが、 実はバイト列として扱われているというのが意外でした」

先生

「そこに気づけたのはとても大事ですね。 その理解があると、スライスや部分文字列の挙動も納得しやすくなります」

生徒

「start と end の指定で、end の文字が含まれないというルールも、 実際にコードを書いてみてようやく分かりました」

先生

「そうですね。手を動かして確認することで、インデックスの感覚が自然と身についてきます。 省略記法も慣れるととても便利ですよ」

生徒

「日本語を扱うときに rune に変換する必要があるという点は、 実際のプログラムで特に気をつけたいと思いました」

先生

「その意識があれば大丈夫です。 今回学んだ文字列スライスの知識は、Go言語でのデータ処理の基礎になります。 ぜひ実際の開発でも活用してみてください」

Go言語の文字列スライスと部分文字列取得は、基礎でありながら非常に重要なテーマです。 正しい理解を積み重ねることで、読みやすく安全なコードを書けるようになります。 今回の内容を振り返りながら、ぜひ自分のプログラムでも積極的に使ってみてください。

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

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

※ Amazon広告リンク

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Go言語で文字列の部分文字列を取得する方法とは何ですか 初心者でも簡単に使えますか

Go言語では文字列スライスという機能を使って部分文字列を取得します インデックスを指定するだけで簡単に取り出せるため初心者でもすぐに使える基本テクニックです
関連セミナーのご案内

【超入門】ゼロから始めるGo言語プログラミング:最速で「動くアプリ」を作るマンツーマン指導

「プログラミングの仕組み」が根本からわかる。Go言語でバックエンド開発の第一歩を。

本講座を受講することで、単なる文法の暗記ではなく、「プログラムがコンピュータの中でどう動いているか」という本質的な理解につながります。シンプルながら強力なGo言語(Golang)を通じて、現代のバックエンドエンジニアに求められる基礎体力を最短距離で身につけます。

具体的な開発内容と環境

【つくるもの】
ターミナル(黒い画面)上で動作する「対話型計算プログラム」や、データを整理して表示する「ミニ・ツール」をゼロから作成します。自分の書いたコードが形になる感動を体験してください。

【開発環境】
プロの現場でシェアNo.1のVisual Studio Code (VS Code)を使用します。インストールから日本語化、Go言語用の拡張機能設定まで、現場基準の環境を一緒に構築します。

この60分で得られる3つの理解

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

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

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

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

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

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

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

セミナー画像

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

カテゴリの一覧へ
新着記事
New1
Swift
Swiftの可変長引数(Variadic Parameters)とは?初心者向けにやさしく解説!
New2
Go言語
Go言語の配列の基本!定義・初期化・アクセス方法をやさしく解説
New3
Swift
Swift変数と定数の使い方|varとletの違いを初心者向けに解説
New4
Swift
Swift正規表現入門!Regex BuilderとNSRegularExpressionを初心者向けに解説
人気記事
No.1
Java&Spring記事人気No1
Kotlin
Android Studioのインストール手順と初期設定を初心者向けに完全解説!
No.2
Java&Spring記事人気No2
Swift
Swift Playgroundの使い方を完全解説!初心者に最適な学習環境の始め方
No.3
Java&Spring記事人気No3
Swift
Swift開発環境の構築方法を徹底解説!Xcode・Windows・Linux対応
No.4
Java&Spring記事人気No4
Swift
Swift入門ガイド|基本構文と書き方をマスターしよう
No.5
Java&Spring記事人気No5
Kotlin
Gradleファイル(build.gradle.kts)の書き方と役割をやさしく解説!Kotlin初心者向け完全ガイド
No.6
Java&Spring記事人気No6
Go言語
Go言語のビルドの基本!go buildコマンドの使い方を初心者向けに解説
No.7
Java&Spring記事人気No7
TypeScript
TypeScriptで絶対値を求める方法!Math.absの使い方を初心者向けにわかりやすく解説
No.8
Java&Spring記事人気No8
Kotlin
Kotlinの可視性修飾子を完全ガイド!public・private・internalの意味と使い分けを初心者向けに解説

💻 作業効率アップに

ノートPCを縦置きしてデスクを広く。
省スペースで片づく定番スタンド

UGREEN 縦型スタンドをAmazonで見る

※ Amazon広告リンク