Go のマップからキーのスライスを取得する

Jay Singh 2023年1月30日
  1. rangeappend() を使用して、Go のマップからキーのスライスを取得する
  2. MapKeys 関数を使用して、Go のマップからキーのスライスを取得する
Go のマップからキーのスライスを取得する

Golang Map は、順序付けされていないキーと値のペアのコレクションです。キーを使用して取得、更新、または削除された値をすばやく検索できるため、広く使用されています。

マップの値はキーのように一意ではなく、int、float64、rune、text、pointer、reference type、maptype などの任意のタイプにすることができます。

このチュートリアルでは、Go のマップからキーのスライスを取得します。

rangeappend() を使用して、Go のマップからキーのスライスを取得する

この例では、文字列キーと文字列値のマップから始めます。次に、別の文字列スライスでキーだけを取得する方法を示します。

range を使用してマップからキーを取得し、append() を使用してそれらを空のスライスにアタッチします。

package main

import "fmt"

func main() {
    m := map[string]string{
        "animal": "Cat",
        "Car":    "GMC",
        "Metal":  "Gold",
    }

    keys := []string{}
    for key, _ := range m {
        keys = append(keys, key)
    }

    fmt.Println("KEYS SLICE -", keys)
}

出力:

KEYS SLICE - [animal Car Metal]

MapKeys 関数を使用して、Go のマップからキーのスライスを取得する

タイプ []Value のキーの配列を取得するには、reflect パッケージから MapKeys メソッドを使用します。

package main

import (
    "fmt"
    "reflect"
)

func main() {
    a := map[string]string{
        "animal": "Cat",
        "Car":    "GMC",
        "Metal":  "Gold",
    }

    keys := reflect.ValueOf(a).MapKeys()

    fmt.Println("Keys Slice -", keys)
}

出力:

Keys Slice - [animal Car Metal]

関連記事 - Go Map