カテゴリ: Go言語 更新日: 2025/07/26

Go言語の構造体リテラルの書き方と便利な使い方

Go言語の構造体リテラルの書き方と便利な使い方
Go言語の構造体リテラルの書き方と便利な使い方

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

生徒

「Go言語で構造体を使うとき、簡単に初期化する方法ってありますか?」

先生

「はい、それには構造体リテラルという書き方を使うのが便利です。これは構造体に中身を一気に詰めて作れる方法ですよ。」

生徒

「なんだか難しそうですが、初心者でも使えますか?」

先生

「もちろんです!わかりやすく説明していくので、ぜひ一緒に見ていきましょう!」

1. 構造体リテラルとは?

1. 構造体リテラルとは?
1. 構造体リテラルとは?

構造体リテラルとは、構造体(struct)の変数を作るときに、中身のデータも一緒に書いて初期化(しょきか)する方法です。

「リテラル(literal)」とは、「その場で書く具体的な値」のことを指します。たとえば数字や文字列もリテラルです。

構造体リテラルを使えば、一行で構造体に値を入れて変数を作れるので、コードがスッキリします。

2. フィールド名ありの構造体リテラル

2. フィールド名ありの構造体リテラル
2. フィールド名ありの構造体リテラル

構造体のリテラルはフィールド名を指定して使うのが基本です。順番を気にせずに書けるので安心です。


type User struct {
    Name  string
    Age   int
    Email string
}

user := User{
    Name:  "たろう",
    Age:   25,
    Email: "taro@example.com",
}

このように、NameAgeなどのフィールド(項目)ごとに値を指定できます。

3. フィールド名なしの構造体リテラル

3. フィールド名なしの構造体リテラル
3. フィールド名なしの構造体リテラル

Go言語では、フィールド名を省略して、順番に値だけを並べる方法もあります。


user := User{"はなこ", 30, "hanako@example.com"}

ただし、フィールドの順番を覚えていないと間違えやすいため、初心者にはおすすめしません。基本的には、名前付きのリテラルを使うようにしましょう。

4. 構造体リテラルを関数に直接渡す

4. 構造体リテラルを関数に直接渡す
4. 構造体リテラルを関数に直接渡す

構造体リテラルは、その場で作って関数に渡すこともできます。


func printUser(u User) {
    fmt.Println("名前:", u.Name)
    fmt.Println("年齢:", u.Age)
    fmt.Println("メール:", u.Email)
}

printUser(User{
    Name:  "じろう",
    Age:   22,
    Email: "jiro@example.com",
})

このようにすれば、わざわざ変数を作らなくても、すぐに関数へ渡して処理できます。

5. スライスと組み合わせて使う

5. スライスと組み合わせて使う
5. スライスと組み合わせて使う

構造体リテラルは、スライス(複数のデータを並べたリストのようなもの)と組み合わせて使うと便利です。


users := []User{
    {Name: "たろう", Age: 25, Email: "taro@example.com"},
    {Name: "はなこ", Age: 30, Email: "hanako@example.com"},
    {Name: "じろう", Age: 22, Email: "jiro@example.com"},
}

このように複数の構造体をまとめて書けるので、大量のデータを扱うときに非常に便利です。

6. 空の構造体リテラルを使う

6. 空の構造体リテラルを使う
6. 空の構造体リテラルを使う

フィールドを何も指定しない{}だけの書き方もあります。


emptyUser := User{}

この場合、すべてのフィールドは""(空の文字列)0など、初期値(ゼロ値)になります。後から値を設定したいときに便利です。


emptyUser.Name = "さぶろう"

7. 入れ子になった構造体リテラル

7. 入れ子になった構造体リテラル
7. 入れ子になった構造体リテラル

構造体の中にさらに構造体がある場合(これを入れ子といいます)も、リテラルで書けます。


type Address struct {
    City   string
    Street string
}

type Person struct {
    Name    string
    Address Address
}

p := Person{
    Name: "ゆうこ",
    Address: Address{
        City:   "東京",
        Street: "中央1-2-3",
    },
}

このようにして、複雑なデータもスッキリ書くことができます。

カテゴリの一覧へ
新着記事
Go言語の関数でエラーハンドリングする基本的な方法
Go言語のスライス・マップ・配列をまとめて比較してみよう!初心者でもわかる使い分けの基本
Go言語の条件分岐の見やすい書き方を徹底解説!初心者でもわかるif文の使い方
Go言語とは何か?初心者向けに特徴・できること・インストール手順までやさしく解説
人気記事
No.1
Java&Spring記事人気No1
Swift Playgroundの使い方を完全解説!初心者に最適な学習環境の始め方
No.2
Java&Spring記事人気No2
Go言語で条件式を1行で書くコツ!三項演算子の代替と短縮記法
No.3
Java&Spring記事人気No3
Swift開発環境の構築方法を徹底解説!Xcode・Windows・Linux対応
No.4
Java&Spring記事人気No4
Kotlinのデータクラス(data class)とは?便利な特徴と使い方を初心者向けにやさしく解説!