Map'leri Karşılaştırma
Coddy'nin GO Journey'sinin Mantık ve Akış bölümünün bir parçası — ders 29 / 68.
Go'daki diğer birçok veri tipinin aksine, map'lerin benzersiz bir kısıtlaması vardır: == operatörü kullanılarak doğrudan karşılaştırılamazlar. Bu kuralın tek istisnası, bir map'i nil ile karşılaştırmaktır.
Bu, aşağıdaki gibi bir kodun derlenmeyeceği anlamına gelir:
map1 := map[string]int{"a": 1, "b": 2}
map2 := map[string]int{"a": 1, "b": 2}
// Bu bir derleme hatasına neden olacaktır!
if map1 == map2 {
fmt.Println("Maps are equal")
}Ancak, bir map'i nil ile güvenli bir şekilde karşılaştırabilirsiniz:
var myMap map[string]int
if myMap == nil {
fmt.Println("Map is nil")
}İki map'in aynı anahtar-değer çiftlerini içerip içermediğini kontrol etmeniz gerektiğinde, her iki map üzerinde de gezinen ve her bir öğeyi tek tek karşılaştıran özel bir fonksiyon yazmalısınız. Bu yaklaşım, karşılaştırma mantığı üzerinde size tam kontrol sağlayarak özel kullanım durumunuz için "eşit"in tam olarak ne anlama geldiğini tanımlamanıza olanak tanır.
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Kopya kağıdı
Map'ler, nil ile karşılaştırılmaları haricinde, == operatörü kullanılarak doğrudan karşılaştırılamazlar:
// Bu derlenmeyecektir
map1 := map[string]int{"a": 1, "b": 2}
map2 := map[string]int{"a": 1, "b": 2}
if map1 == map2 { // Derleme hatası!
fmt.Println("Maps are equal")
}Bir map'i nil ile karşılaştırabilirsiniz:
var myMap map[string]int
if myMap == nil {
fmt.Println("Map is nil")
}İki map'in eşit olup olmadığını kontrol etmek için, her iki map üzerinde de dönen ve her bir öğeyi tek tek karşılaştıran özel bir fonksiyon yazmalısınız.
Kendin dene
Bu ders bir kod alıştırması içermiyor.
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Mantık ve Akış bölümündeki tüm dersler
1İleri Seviye Kontrol Akışı
`fallthrough` ile Switchİç İçe Döngülerden ÇıkmaBelirli Bir Döngüye Devam Etme`goto` İfadesiÖzet - İleri Seviye Döngü Kontrolü4Proje: Basit Görev Listesi
Proje KurulumuGörev Ekleme2Structlar ve Metotlar
Structlarda Metot TanımlamaValue Receiver'larPointer Receiver'larReceiver SeçimiMetotlar ve FonksiyonlarÖzet - Struct Davranışı5Derinlemesine Map'ler
Struct Map'leriMap Değeri Olarak Pointer'larNil Map KontrolüMap'leri KarşılaştırmaÖzet - Kelime Frekansı Sayacı3Arayüzler (Temeller)
Arayüz Nedir?Bir Arayüz TanımlamaBir Arayüzü UygulamaArayüz Tiplerini KullanmaBoş ArayüzTip OnaylamalarıTip SeçimiÖzet - Şekiller ve Davranışlar