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.
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
1Luồng điều khiển nâng cao
Switch với `fallthrough`Thoát khỏi vòng lặp lồng nhauTiếp tục một vòng lặp cụ thểCâu lệnh `goto`Ôn tập: điều khiển vòng lặp nâng cao4Dự án: Danh sách việc cần làm đơn giản
Thiết lập dự ánThêm một việc cần làm2Struct và phương thức
Định nghĩa phương thức cho structReceiver giá trịReceiver con trỏChọn receiverPhương thức và hàmÔn tập: hành vi của struct5Tìm hiểu chuyên sâu về map
Map chứa structCon trỏ làm giá trị của mapKiểm tra map nilSo sánh các mapÔn tập: bộ đếm tần suất từ8Dự án: Quản lý hàng tồn kho đơn giản
Tổng quan dự ánKiểm tra hàng tồn kho3Interface (cơ bản)
Interface là gì?Định nghĩa interfaceTriển khai interfaceDùng kiểu interfaceInterface rỗngKhẳng định kiểuType switchÔn tập: hình dạng và hành viTự luyện tập: Trình biên dịch Go online