mapのキーやバリューで構造体を使用してみよう!

Go言語
この記事は約5分で読めます。
Go初学者
Go初学者

構造体をmapのキーやバリュー(値)で使えるんですか?

この記事では構造体をmapのキーやバリューで使用する方法を理解できます!
  • 構造体をmapのキーやバリューで使用する方法について
  • for文とrangeを使って値を取り出す方法について

Go言語の構造体はmapのキーやバリューとして使用することができます。

その方法をプログラムを確認しながら理解していきましょう。

ちなみにmapの基本については、以下のブログ記事を参考にしてみてください。

もりぴ
この記事を書いた人

XHTML1.0時代にHTML&CSSを勉強した経験あり。無趣味だった私が2020年5月からプログラミング学習を開始し現在も挫折せずに趣味で学習を楽しんでいる51歳。プログラミングの楽しさをブログを通してお伝えしていきます。

もりぴをフォローする

構造体をmapのキーやバリューで使用する

構造体をmapで使用するプログラムを、キーとバリューそれぞれ確認していきましょう。

構造体をバリュー(値)として使用する

構造体をバリューとして使用するプログラムです。

もりぴ
もりぴ

今回はゲームアプリのユーザー管理を例にしてみます。

// 構造体をバリュー(値)として使用
package main

import "fmt"

type GameUser struct {
    Name       string  // ニックネーム
    Prefecture string  // ユーザー所在地
}

func main() {
    // バリューに構造体を利用する
    id := map[int]GameUser{
	1: {Name: "もりぴ", Prefecture: "青森県"},
	2: {Name: "ひろし", Prefecture: "東京都"},
    }

    // 値を出力
    fmt.Println(id)

    // idが1のNameを取り出す
    fmt.Println(id[1].Name)
}
// 出力結果
$ go run main.go
map[1:{もりぴ 青森県} 2:{ひろし 東京都}]
もりぴ

今回はゲームユーザーのIDをキーに、構造体のデータをバリューに設定しました。

構造体をmapのバリューに設定するには、下記の構成になります。

変数名 := map[型]構造体の型{}

個別の値を取り出すには、下記のよう設定します。

fmt.Println(変数名[キー].構造体のフィールド名)

構造体をキーとして使用する

構造体をキーとして使用するプログラムです。

// 構造体をキーとして使用
package main

import "fmt"

type GameUser struct {
    Name       string  // ニックネーム
    Prefecture string  // ユーザー所在地
}

func main() {
    // キーに構造体を利用する
    useOs := map[GameUser]string{
	{Name: "もりぴ", Prefecture: "青森県"}: "Linux",
	{Name: "ひろし", Prefecture: "東京都"}: "Windows",
    }

    // 値を出力
    fmt.Println(useOs)
}
// 出力結果
$ go run main.go
map[{ひろし 東京都}:Windows {もりぴ 青森県}:Linux]

mapの値の出力の順序は保証しません

もりぴ
もりぴ

入力した通りに値が出力されなくても焦らないでね!

構造体をmapのキーとして使用するには、下記のように設定します。

変数名 := map[構造体型]型{}

構造体を使用したmapの値をfor文で取り出す

構造体を使用したmapの値を for文range を使って取り出してみましょう。

// 構造体を使用したmapの値をfor文で取り出す
package main

import "fmt"

type GameUser struct {
    Name       string  // ニックネーム
    Prefecture string  // ユーザー所在地
}

func main() {
    // バリューに構造体を利用する
    id := map[int]GameUser{
	1: {Name: "もりぴ", Prefecture: "青森県"},
	2: {Name: "ひろし", Prefecture: "東京都"},
    }

    // for文で値を出力する
    for k, v := range id {
	fmt.Println(k, v)
    }
}
// 出力結果
$ go run main.go
1 {もりぴ 青森県}
2 {ひろし 東京都}
もりぴ
もりぴ

基本型のスライスやmapの値の取り出し方と一緒ですよ。

【まとめ】構造体をmapのキーやバリューで使用する

今回は構造体をmapのキーやバリューで使用するプログラムをご紹介しました。

それでは、ここまでの内容をまとめてみましょう。

この記事で押さえておくこと!
  • 構造体をmapのバリューに設定するには 変数名 := map[型]構造体の型{}
  • 構造体をmapのキーとして使用するには 変数名 := map[構造体型]型{}
  • 構造体を使用したmapの値を for文range で取り出すことができる

以上です。

構造体をmapのキーやバリューで使用できることを覚えておけば大丈夫です。

先輩のコードを見る時にも役立つと思います。

comment

タイトルとURLをコピーしました