カテゴリ: Go言語 更新日: 2026/01/28

Go言語の構造体とDBのマッピングをやさしく解説!Scanの活用法を初心者向けに完全ガイド

Go言語の構造体とDBのマッピングをやさしく解説(Scanの活用法)
Go言語の構造体とDBのマッピングをやさしく解説(Scanの活用法)

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

生徒

「Go言語でデータベースの値をプログラムに入れたいんですが、どうやって使えばいいんですか?」

先生

「Go言語では、構造体とScanを使うことで、データベースのデータを安全に扱えます。」

生徒

「構造体って何ですか?難しそうです……」

先生

「大丈夫です。箱にラベルを貼るイメージで考えると、とても分かりやすいですよ。」

1. Go言語の構造体とは?

1. Go言語の構造体とは?
1. Go言語の構造体とは?

Go言語の構造体とは、複数のデータをひとまとめにする仕組みです。 たとえば「人」という情報を考えると、名前、年齢、メールアドレスなど、いくつかの情報があります。 これらをバラバラに扱うのではなく、ひとつの箱にまとめたものが構造体です。

プログラミング未経験の方は、引き出し付きの収納ボックスを想像してください。 それぞれの引き出しに「名前」「年齢」と書いてあるようなものです。 これにより、データの管理がとても楽になります。

2. データベースとGo言語の関係

2. データベースとGo言語の関係
2. データベースとGo言語の関係

データベースとは、大量のデータを整理して保存する場所です。 Webサービスや業務システムでは、ユーザー情報や商品情報をデータベースに保存します。 Go言語は、このデータベースとやり取りするための仕組みが標準で用意されています。

データベースの表は「表計算ソフトの表」と似ています。 行がデータ、列が項目を表しており、この列の情報をGo言語の構造体に対応させることで、 プログラムの中で安全に扱えるようになります。

3. 構造体とDBのマッピングとは?

3. 構造体とDBのマッピングとは?
3. 構造体とDBのマッピングとは?

マッピングとは、「対応づけ」のことです。 データベースの列と、Go言語の構造体のフィールドを一対一で結びつけます。 たとえば、データベースの「name」列は、構造体の「Name」に入れる、といった具合です。

この対応づけを正しく行うことで、データの取り違えやミスを防ぐことができます。 特に初心者の方にとって、構造体を使うことは安全装置を付けるようなものです。

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

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

※ Amazon広告リンク

4. Scanとは何をするもの?

4. Scanとは何をするもの?
4. Scanとは何をするもの?

Scanは、データベースから取得した値を、Go言語の変数に入れるための仕組みです。 「読み取って箱に入れる係」と考えると分かりやすいでしょう。 データベースの1行分のデータを、順番に指定した変数へ流し込みます。

Scanを使うことで、文字列や数値を自動的にGo言語の型へ変換してくれます。 これにより、初心者でも複雑な変換処理を書かずに済みます。

5. Scanを使った基本的な流れ

5. Scanを使った基本的な流れ
5. Scanを使った基本的な流れ

Go言語でデータベースの値を構造体に入れる流れは、とてもシンプルです。 まず構造体を用意し、次にSQLでデータを取得し、最後にScanで値を入れます。 この流れを覚えるだけで、基本的なDB操作ができるようになります。


type User struct {
    ID   int
    Name string
    Age  int
}

row := db.QueryRow("SELECT id, name, age FROM users WHERE id = ?", 1)

var user User
row.Scan(&user.ID, &user.Name, &user.Age)

上記の例では、データベースの列の順番と、Scanで指定する順番を合わせています。 この順番がずれると、正しいデータが入らないため注意が必要です。

6. Scanを使うメリット

6. Scanを使うメリット
6. Scanを使うメリット

Scanを使う最大のメリットは、安全性と分かりやすさです。 構造体を使うことで、どのデータが何を表しているのか一目で分かります。 また、型が決まっているため、間違った値が入ることを防げます。

Go言語はシンプルさを大切にした言語です。 Scanと構造体の組み合わせは、その思想を体現した方法と言えるでしょう。

関連記事:
カテゴリの一覧へ
新着記事
New1
Kotlin
Kotlinの例外処理とキャンセルの連携を完全ガイド!初心者でもわかるCoroutineExceptionHandlerの使い方
New2
Go言語
Go言語のクロージャとは?関数内関数の活用例と仕組み
New3
Swift
Swiftでエラー原因を可視化!ログとトレースのベストプラクティスを初心者向けに解説
New4
Go言語
Go言語の関数パラメータ!値渡しと参照渡しの違いを理解しよう
人気記事
No.1
Java&Spring記事人気No1
Kotlin
KotlinのChannelでデータをやり取りする方法を完全ガイド!初心者にもわかる非同期通信の基本
No.2
Java&Spring記事人気No2
Go言語
Go言語でのDB接続情報を環境変数で管理する方法|初心者でも安全に設定
No.3
Java&Spring記事人気No3
Kotlin
Android Studioのインストール手順と初期設定を初心者向けに完全解説!
No.4
Java&Spring記事人気No4
Kotlin
Kotlinのビルド設定エラーと解決法まとめ!初心者向けGradleトラブル対処ガイド
No.5
Java&Spring記事人気No5
Kotlin
Gradleファイル(build.gradle.kts)の書き方と役割をやさしく解説!Kotlin初心者向け完全ガイド
No.6
Java&Spring記事人気No6
Kotlin
Kotlinでテキスト表示・編集!初心者でもわかるTextViewとEditTextの使い方
No.7
Java&Spring記事人気No7
Swift
Swift Playgroundの使い方を完全解説!初心者に最適な学習環境の始め方
No.8
Java&Spring記事人気No8
Go言語
Go言語のgo.modファイル完全ガイド!初心者でもわかる仕組みと書き方

💻 作業効率アップに

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

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

※ Amazon広告リンク