Mapの比較
CoddyのGOジャーニー「論理とフロー」セクションの一部 — レッスン 29/68。
Goの他の多くのデータ型とは異なり、マップには独自の制限があります。それは、== 演算子を使用して直接比較することができないという点です。このルールの唯一の例外は、マップを nil と比較する場合です。
これは、次のようなコードがコンパイルされないことを意味します:
map1 := map[string]int{"a": 1, "b": 2}
map2 := map[string]int{"a": 1, "b": 2}
// これはコンパイルエラーを引き起こします!
if map1 == map2 {
fmt.Println("Maps are equal")
}しかし、マップを nil と安全に比較することができます:
var myMap map[string]int
if myMap == nil {
fmt.Println("Map is nil")
}2つのマップが同じキーと値のペアを含んでいるかを確認する必要がある場合、両方のマップを反復処理し、各要素を個別に比較するカスタム関数を記述する必要があります。このアプローチにより、比較ロジックを完全に制御できるようになり、特定のユースケースにおいて「等しい」が何を意味するかを正確に定義できます。
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
チートシート
マップは、nil と比較する場合を除き、== 演算子を使用して直接比較することはできません。
// これはコンパイルされません
map1 := map[string]int{"a": 1, "b": 2}
map2 := map[string]int{"a": 1, "b": 2}
if map1 == map2 { // コンパイルエラー!
fmt.Println("Maps are equal")
}マップを nil と比較することは可能です:
var myMap map[string]int
if myMap == nil {
fmt.Println("Map is nil")
}2つのマップが等しいかどうかを確認するには、両方のマップを反復処理し、各要素を個別に比較するカスタム関数を記述する必要があります。
自分で試してみよう
このレッスンにはコードチャレンジは含まれていません。
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。