はじめに
Go言語でデータをまとめて扱うときに使うのが「構造体(struct)」です。
「変数が増えて管理が大変…」
👉 そんなときにstructが活躍します。
この記事では、Goの構造体の使い方を初心者でも理解できるように解説します。
構造体(struct)とは?(超重要)
構造体とは「複数のデータをまとめる箱」です。
例えば👇
- 名前
- 年齢
- メール
👉 これらを1つにまとめて管理できます。
structの基本構文
type 構造体名 struct {
フィールド名 型
}
構造体の作り方
type User struct {
Name string
Age int
}
👉 「User」という新しい型を作る
インスタンスの作成
user := User{
Name: "Tom",
Age: 30,
}
値の取得・変更
fmt.Println(user.Name)
user.Age = 31
👉 ドット(.)でアクセス
初期化の別パターン
user := User{"Tom", 30}
👉 順番で指定(初心者は非推奨)
ポインタで扱う(重要)
user := &User{Name: "Tom", Age: 30}
user.Age = 40
👉 Goはポインタでも「.」でアクセスできる
メソッド(構造体の関数)
func (u User) greet() {
fmt.Println("こんにちは", u.Name)
}
呼び出し
user.greet()
👉 structに機能を持たせる
値レシーバ vs ポインタレシーバ
func (u *User) updateAge(age int) {
u.Age = age
}
👉 値を変更したいときはポインタ
structとmapの違い
| 項目 | struct | map |
|---|---|---|
| 型 | 固定 | 柔軟 |
| 安全性 | 高い | 低い |
| 用途 | データ設計 | データ管理 |
👉 実務では両方使う
structとJSON(実務重要)
type User struct {
Name string `json:"name"`
Age int `json:"age"`
}
👉 API開発で必須
structのネスト(応用)
type Address struct {
City string
}
type User struct {
Name string
Address Address
}
👉 複雑なデータを扱える
初心者がつまずくポイント
❌ フィールド名が小文字
name string ← 外部から見えない
👉 大文字にする
❌ ポインタ理解不足
👉 値が変わらない原因
❌ 初期化ミス
👉 型と順番に注意
実践サンプル
package main
import "fmt"
type User struct {
Name string
Age int
}
func main() {
user := User{Name: "Tom", Age: 30}
fmt.Println(user.Name)
}
学習のコツ
- struct+メソッドで理解
- mapと比較する
- JSONで使う
👉 実務に直結する重要分野
まとめ|structは超重要
Go言語の構造体は👇
✔ データをまとめる
✔ メソッドを持てる
✔ 実務で必須
👉 Goの設計の中心


コメント