Golangでマップを順番に反復処理する方法とは?
2023-09-16 22:10:55
質問
以下の私の地図をご覧ください。
var romanNumeralDict map[int]string = map[int]string{
1000: "M",
900 : "CM",
500 : "D",
400 : "CD",
100 : "C",
90 : "XC",
50 : "L",
40 : "XL",
10 : "X",
9 : "IX",
5 : "V",
4 : "IV",
1 : "I",
}
私はこのマップをキーの大きさの順にループさせたいと思っています。
for k, v := range romanNumeralDict {
fmt.Println("k:", k, "v:", v)
}
しかし、これは以下のように出力されます。
k: 1000 v: M
k: 40 v: XL
k: 5 v: V
k: 4 v: IV
k: 900 v: CM
k: 500 v: D
k: 400 v: CD
k: 100 v: C
k: 90 v: XC
k: 50 v: L
k: 10 v: X
k: 9 v: IX
k: 1 v: I
このマップを次のようにループして、キーの大きさの順にプリントアウトする方法はありますか?
k:1
K:4
K:5
K:9
k:10
etc...
どうもありがとうございました。
どのように解決するのですか?
以下のように、すべてのキーを収集し、ソートして、キーごとにマップを繰り返し処理します。
keys := make([]int, 0)
for k, _ := range romanNumeralDict {
keys = append(keys, k)
}
sort.Ints(keys)
for _, k := range keys {
fmt.Println(k, romanNumeralDict[k])
}
関連
-
[解決済み] Goでマップにキーが含まれているかどうかを確認するには?
-
[解決済み] goで文字列の連結を効率的に行う方法
-
[解決済み] スライスを宣言するのか、スライスを作るのか?
-
[解決済み] Goで関数の名前を取得するには?
-
[解決済み] チャネルの要素数
-
[解決済み] Ubuntuホスト上のalpine dockerコンテナでGoコンパイルされたバイナリが実行されない
-
[解決済み] Goでシステムコマンドの出力を得るには?
-
[解決済み] 遅延呼び出しに対応した囲碁プログラムを終了させるには?
-
[解決済み] ソースツリー全体に対するgo fmt
-
[解決済み] Goチャンネルはどのように実装されるのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】マップからキーのスライスを取得する
-
[解決済み] go モジュール内のローカルパッケージへのアクセス (go 1.11)
-
[解決済み] テキストファイルを文字列配列に読み込む(そして書き込む)
-
[解決済み] テンプレートでマップを繰り返し処理する
-
[解決済み] マップを含む値を順番に収集する
-
[解決済み] 匿名インターフェイスを埋め込んだ構造体の意味?
-
[解決済み] チャンネルを読まずに閉じたかどうかを確認する方法は?
-
[解決済み] Go テンプレートで変数キーを使用してマップ値にアクセスする
-
[解決済み] go.sum ファイルは git リポジトリにチェックインする必要がありますか?
-
[解決済み] Goで複数のコマンドをパイプでつなぐには?