1. ホーム
  2. go

[解決済み] golangでは、マップから値のスライスを取得する良い方法はありますか?

2022-09-02 06:23:03

質問

マップmがある場合、値vのスライスを取得するためのより良い方法はあるのでしょうか?

package main
import (
  "fmt"
)

func main() {
    m := make(map[int]string)

    m[1] = "a"
    m[2] = "b"
    m[3] = "c"
    m[4] = "d"

    // Can this be done better?
    v := make([]string, len(m), len(m))
    idx := 0
    for  _, value := range m {
       v[idx] = value
       idx++
    }

    fmt.Println(v)
 }

マップの内蔵機能はありますか?Goパッケージの関数があるのでしょうか、それとも必要ならこのコードが最適なのでしょうか?

どのように解決するのですか?

残念ながら、ありません。これを行うための組み込みの方法はありません。

余談ですが、スライス作成時に容量引数を省略することができます。

v := make([]string, len(m))

容量はここでは長さと同じであることが暗示されています。