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

Go言語の文字列検索を徹底解説!Contains・Indexの使い方と活用法

Go言語の文字列の検索(Contains・Index)とその活用法
Go言語の文字列の検索(Contains・Index)とその活用法

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

生徒

「Go言語で文章の中から特定の言葉を探したいんですけど、どうすればいいですか?」

先生

「Go言語にはstringsパッケージが用意されていて、その中に文字列を検索するための便利な関数があります。代表的なのがContainsIndexです。」

生徒

「その2つはどう違うんですか?」

先生

「とても良い質問ですね。Containsは文字列が含まれているかどうかを真偽値(trueかfalse)で返し、Indexはその文字列が見つかった場所の位置を数字で返してくれます。それでは順番に見ていきましょう。」

1. Go言語で文字列検索を行う方法

1. Go言語で文字列検索を行う方法
1. Go言語で文字列検索を行う方法

Go言語の文字列検索では、標準ライブラリであるstringsパッケージを使います。このパッケージは文字列の操作に特化していて、検索・置換・分割などさまざまな処理が可能です。特に初心者の方が最初に使うことになるのが、ContainsIndexです。

たとえば「リンゴが好きです」という文章から「リンゴ」という言葉が含まれているかどうか調べることができます。検索というと難しく聞こえますが、実際には「探し物を見つける」イメージです。

2. Contains関数とは?

2. Contains関数とは?
2. Contains関数とは?

Contains関数は、指定した文字列の中に特定の文字列が含まれているかを判定します。結果はtrue(含まれる)かfalse(含まれない)の二択です。まるで部屋の中に「リンゴ」があるかをチェックするようなイメージです。


package main

import (
    "fmt"
    "strings"
)

func main() {
    text := "私はGo言語を勉強しています"
    result := strings.Contains(text, "Go")
    fmt.Println(result)
}

true

この例では、「私はGo言語を勉強しています」という文字列に「Go」が含まれているため、結果はtrueになります。

3. Index関数とは?

3. Index関数とは?
3. Index関数とは?

Index関数は、指定した文字列が最初に現れる位置(インデックス)を返します。インデックスとは文字列の何文字目にあるかを示す番号で、0から数え始めます。

もし見つからなかった場合は、-1が返ります。これは「存在しない」という意味を持っています。


package main

import (
    "fmt"
    "strings"
)

func main() {
    text := "私はGo言語を勉強しています"
    index := strings.Index(text, "Go")
    fmt.Println(index)
}

3

この場合、「Go」は文字列の4文字目(インデックスは0から数えるので3)に現れます。そのため結果は3です。

4. ContainsとIndexの違いを整理しよう

4. ContainsとIndexの違いを整理しよう
4. ContainsとIndexの違いを整理しよう

ここまでの説明を整理すると次のようになります。

  • Contains:文字列が含まれているかどうかを調べて、結果をtrueまたはfalseで返す
  • Index:文字列がどの位置にあるかを数値で返す。見つからない場合は-1

どちらを使うかは目的によって変わります。「あるかどうか」だけを知りたいならContains、「どこにあるか」も知りたいならIndexを選びます。

5. 実践的な活用例

5. 実践的な活用例
5. 実践的な活用例

ここでは、実際に日常的なシーンを想定した使い方を紹介します。

5-1. ユーザー入力のチェック

たとえば、ユーザーが入力したメールアドレスに@が含まれているかを調べることで、簡易的なバリデーション(正しいかどうかの確認)を行えます。


package main

import (
    "fmt"
    "strings"
)

func main() {
    email := "sample@example.com"
    if strings.Contains(email, "@") {
        fmt.Println("正しい形式のメールアドレスです")
    } else {
        fmt.Println("メールアドレスの形式が間違っています")
    }
}

正しい形式のメールアドレスです

5-2. キーワード検索機能

ブログの記事や商品の説明文の中から、ユーザーが検索したいキーワードが含まれているかどうかを判定する際にContainsは役立ちます。

5-3. 部分一致での情報処理

Indexを使うことで、文章中のどの位置に特定の単語があるかを調べ、さらにその部分だけを切り取るといった応用も可能です。

6. エラー処理と注意点

6. エラー処理と注意点
6. エラー処理と注意点

初心者の方が気をつけるべき点として、Index-1を返すケースがあります。これは検索した文字列が見つからなかった場合です。-1をそのまま使うとエラーにつながる可能性があるので、必ずチェックしてから利用しましょう。


package main

import (
    "fmt"
    "strings"
)

func main() {
    text := "Go言語入門"
    index := strings.Index(text, "Java")
    if index == -1 {
        fmt.Println("指定した文字列は見つかりませんでした")
    } else {
        fmt.Println("文字列は位置", index, "にあります")
    }
}

指定した文字列は見つかりませんでした

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

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

※ Amazon広告リンク

まとめ

まとめ
まとめ

Go言語の文字列検索をしっかり理解しよう

この記事では、Go言語における文字列検索の基本として、stringsパッケージの中でも特によく使われるContains関数とIndex関数について詳しく解説してきました。文字列検索は、プログラミングにおいて非常に登場頻度が高く、Webアプリケーション、業務ツール、データ処理など、あらゆる場面で活用されます。初心者の方にとっては「検索」という言葉だけで難しく感じがちですが、実際には「文章の中に特定の言葉があるかを探す」という、とても身近な処理です。

Go言語では、標準ライブラリが非常に充実しており、複雑な処理を自分で実装しなくても、用意された関数を使うだけで安全かつ高速に文字列検索を行えます。特にContainsIndexは、初心者が最初に覚えるべき基本関数であり、この2つを理解するだけでも、できることの幅は大きく広がります。

ContainsとIndexの役割を振り返る

Contains関数は、「その文字列が含まれているかどうか」だけを知りたいときに使います。結果はtruefalseのどちらかなので、条件分岐と非常に相性が良く、入力チェックや簡単な判定処理によく利用されます。一方で、Index関数は、文字列が「どこにあるか」を知りたい場合に使います。位置を数値で取得できるため、文章の一部を切り出したり、検索結果を加工したりといった応用処理が可能になります。

また、Indexが見つからなかった場合に-1を返す点は、初心者がつまずきやすいポイントです。この挙動を正しく理解し、必ずチェックする習慣を身につけることで、実行時エラーを防ぎ、安定したプログラムを書くことができます。

実務や学習での活用イメージ

実際の開発現場では、文字列検索はユーザー入力のチェック、キーワード検索機能、ログ解析、ファイル内容の確認など、さまざまな用途で使われます。たとえば、フォームに入力された文字列に禁止ワードが含まれていないかを確認したり、検索ワードが文章中に含まれているかを判定したりする処理は、Containsを使えば簡単に実装できます。

Indexを使えば、文章中の特定の位置を基準に処理を分岐したり、文字列を分割したりすることもできます。こうした基本的な文字列操作を積み重ねていくことで、より高度な機能実装にも自然と対応できるようになります。

簡単な総合サンプルで確認

最後に、ContainsIndexを組み合わせたシンプルなサンプルを見てみましょう。文章の中に特定の単語が含まれているかを確認し、見つかった場合はその位置を表示する例です。


package main

import (
    "fmt"
    "strings"
)

func main() {
    text := "Go言語の文字列検索を学習しています"
    keyword := "文字列"

    if strings.Contains(text, keyword) {
        index := strings.Index(text, keyword)
        fmt.Println("キーワードは位置", index, "に見つかりました")
    } else {
        fmt.Println("キーワードは見つかりませんでした")
    }
}

このように、基本的な関数を組み合わせるだけで、実用的な処理が簡単に実装できます。まずは小さなサンプルで動きを確認し、少しずつ応用していくことが、Go言語学習の近道です。

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

生徒:「文字列検索って難しいと思っていましたが、ContainsとIndexだけで色々できるんですね。」

先生:「そうですね。まずは基本をしっかり押さえることが大切です。」

生徒:「Indexが-1を返す意味も、やっと理解できました。」

先生:「そこに気づけたのは大きいですね。実務でもよく使うポイントです。」

生徒:「これからは入力チェックや検索処理を自分で書いてみます。」

先生:「ぜひ試してみてください。使えば使うほど理解が深まりますよ。」

関連セミナーのご案内

【超入門】ゼロから始める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
Swift
Swiftのswitch文の使い方|初心者でもわかるパターンマッチング徹底解説
New3
Kotlin
Kotlinの認証と認可を完全解説!初心者でもわかる安全なログイン管理とセキュリティ対策
New4
Go言語
Go言語の関数でエラーハンドリングする基本的な方法
人気記事
No.1
Java&Spring記事人気No1
Swift
Swift開発環境の構築方法を徹底解説!Xcode・Windows・Linux対応
No.2
Java&Spring記事人気No2
Kotlin
Gradleファイル(build.gradle.kts)の書き方と役割をやさしく解説!Kotlin初心者向け完全ガイド
No.3
Java&Spring記事人気No3
Go言語
Go言語でリダイレクト処理を行う方法(http.Redirect)を初心者向けに解説
No.4
Java&Spring記事人気No4
Kotlin
Android Studioのインストール手順と初期設定を初心者向けに完全解説!
No.5
Java&Spring記事人気No5
Swift
Swift Playgroundの使い方を完全解説!初心者に最適な学習環境の始め方
No.6
Java&Spring記事人気No6
Go言語
Go言語のgo.modファイル完全ガイド!初心者でもわかる仕組みと書き方
No.7
Java&Spring記事人気No7
Kotlin
Kotlinの文字列の部分取得!substring・take・dropの基本
No.8
Java&Spring記事人気No8
Go言語
Go言語でミドルウェアを作成する方法と活用例!初心者でもわかるWebアプリ開発