Menu
Coddy logo textTech

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つのマップが同じキーと値のペアを含んでいるかを確認する必要がある場合、両方のマップを反復処理し、各要素を個別に比較するカスタム関数を記述する必要があります。このアプローチにより、比較ロジックを完全に制御できるようになり、特定のユースケースにおいて「等しい」が何を意味するかを正確に定義できます。

quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

チートシート

マップは、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つのマップが等しいかどうかを確認するには、両方のマップを反復処理し、各要素を個別に比較するカスタム関数を記述する必要があります。

自分で試してみよう

このレッスンにはコードチャレンジは含まれていません。

quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

論理とフローのすべてのレッスン