
Go初学者
構造体をmapのキーやバリュー(値)で使えるんですか?
この記事では構造体をmapのキーやバリューで使用する方法を理解できます!
Go言語の構造体はmapのキーやバリューとして使用することができます。
その方法をプログラムを確認しながら理解していきましょう。
ちなみにmapの基本については、以下のブログ記事を参考にしてみてください。
構造体を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のバリューに設定するには、下記の構成になります。
個別の値を取り出すには、下記のよう設定します。
構造体をキーとして使用する
構造体をキーとして使用するプログラムです。
// 構造体をキーとして使用
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の値を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のキーやバリューで使用できることを覚えておけば大丈夫です。
先輩のコードを見る時にも役立つと思います。
comment