Menu
CoddyTech

So sánh các map

Thuộc phần Logic và luồng điều khiển trong hành trình GO của Coddy. Bài học 29 trên 68.

Khác với nhiều kiểu dữ liệu khác trong Go, map có một hạn chế riêng: bạn không thể so sánh trực tiếp chúng bằng toán tử ==. Ngoại lệ duy nhất là khi so sánh map với nil.

Điều này có nghĩa là đoạn code như sau sẽ không biên dịch được:

map1 := map[string]int{"a": 1, "b": 2}
map2 := map[string]int{"a": 1, "b": 2}

// Đoạn này sẽ gây lỗi biên dịch!
if map1 == map2 {
    fmt.Println("Maps are equal")
}

Tuy nhiên, bạn có thể an toàn so sánh một map với nil:

var myMap map[string]int
if myMap == nil {
    fmt.Println("Map is nil")
}

Khi cần kiểm tra xem hai map có chứa cùng các cặp khóa-giá trị hay không, bạn phải viết một hàm (function) tùy chỉnh để duyệt qua cả hai map và so sánh từng phần tử. Cách này giúp bạn toàn quyền kiểm soát logic so sánh, cho phép bạn xác định chính xác thế nào là “bằng nhau” trong trường hợp cụ thể của mình.

Tự làm thử

Bài học này không có thử thách code.

quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Logic và luồng điều khiển

Tự luyện tập: Trình biên dịch Go online