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

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言語の実践的な開発において非常に重宝される書き方です。コードの見通しが良くなり、内容の意図が伝わりやすくなるため、初心者にも積極的に使ってほしいテクニックといえます。 以下に、今回の内容をひとまとめにしたサンプルプログラムを掲載し、リテラルを使った実践的な書き方をより具体的にイメージできるようにしています。

構造体リテラルを活用したサンプルコード


package main

import "fmt"

type User struct {
    Name  string
    Age   int
    Email string
}

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

type Address struct {
    City   string
    Street string
}

type Person struct {
    Name    string
    Address Address
}

func main() {
    // フィールド名を指定した構造体リテラル
    user := User{
        Name:  "たろう",
        Age:   25,
        Email: "taro@example.com",
    }
    printUser(user)

    // スライスにまとめた構造体リテラル
    users := []User{
        {Name: "はなこ", Age: 30, Email: "hanako@example.com"},
        {Name: "じろう", Age: 22, Email: "jiro@example.com"},
    }
    for _, u := range users {
        printUser(u)
    }

    // 入れ子になった構造体リテラル
    p := Person{
        Name: "ゆうこ",
        Address: Address{
            City:   "大阪",
            Street: "北区1-2-3",
        },
    }
    fmt.Println("名前:", p.Name)
    fmt.Println("市区町村:", p.Address.City)
    fmt.Println("住所:", p.Address.Street)
}

このサンプルコードでは、フィールド名ありの構造体リテラルを使った初期化方法、複数の構造体をスライスでまとめる方法、入れ子の構造体をリテラルで表現する方法など、実用的な場面をひととおりまとめています。構造体リテラルは、必要な情報を直感的に書き込めるため、複雑なデータを整理する際の強力な助けになります。ひとつひとつの値が明確な形で書かれているため、読み手にとっても理解しやすく、後から修正するときにも迷わないという利点があります。 今後の開発でも、データのまとまりが必要になる場面でリテラルを活用することで、コードの流れが自然で読みやすいものになります。また、リテラルを関数に直接渡せる柔軟さは、処理をコンパクトにまとめたい場面でとくに効果的です。こうした特徴を生かして、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
Go言語
Go言語のwhile的なforループの使い方!条件式ループの基本を解説
New2
Go言語
Go言語プログラムの実行方法まとめ!VSCode・ターミナルでの実行手順を解説
New3
Swift
Swift意味とは?プログラミング言語・金融・鳥の違いを徹底解説
New4
Swift
Swift 戻り値の扱い方と複数戻り値の返し方|初心者でも分かる関数の基本
人気記事
No.1
Java&Spring記事人気No1
Go言語
Go言語でリダイレクト処理を行う方法(http.Redirect)を初心者向けに解説
No.2
Java&Spring記事人気No2
Swift
Swift開発環境の構築方法を徹底解説!Xcode・Windows・Linux対応
No.3
Java&Spring記事人気No3
Kotlin
Android Studioのインストール手順と初期設定を初心者向けに完全解説!
No.4
Java&Spring記事人気No4
Kotlin
Gradleファイル(build.gradle.kts)の書き方と役割をやさしく解説!Kotlin初心者向け完全ガイド
No.5
Java&Spring記事人気No5
Go言語
Go言語のgo.modファイル完全ガイド!初心者でもわかる仕組みと書き方
No.6
Java&Spring記事人気No6
Swift
Swift Playgroundの使い方を完全解説!初心者に最適な学習環境の始め方
No.7
Java&Spring記事人気No7
Go言語
Go言語で条件式を1行で書くコツ!三項演算子の代替と短縮記法
No.8
Java&Spring記事人気No8
Kotlin
Kotlinの演算子一覧と使い方!算術・比較・論理演算子の基本を解説