Go'da Küme Deyimi
Coddy'nin GO Journey'sinin Mantık ve Akış bölümünün bir parçası — ders 31 / 68.
Go, diğer birçok programlama dilinin aksine yerleşik bir küme (set) veri yapısına sahip değildir. Bununla birlikte, Go geliştiricileri kümeleri simüle etmek için map'leri kullanan zarif bir çözüm üretmişlerdir ve bu kalıp o kadar yaygınlaşmıştır ki idiomatik Go olarak kabul edilir.
Go küme (set) deyimi, yalnızca anahtarlarla ilgilendiğiniz, değerlerle ilgilenmediğiniz bir map kullanır. Değer olarak bir şey saklamanız gerektiğinden, Go programcıları boş bir struct struct{} kullanır. İşte temel desen:
var mySet map[string]struct{}Boş struct struct{} bellekte sıfır bayt yer kapladığı için özeldir. Bu, anlamsız değerler için bellek harcamadan, sadece bir şeyin var olup olmadığını takip etmeniz gereken kümeler (sets) için onu mükemmel kılar.
Bu yaklaşım, map anahtarlarının temel özelliğinden yararlanır: benzersiz olmaları gerekir. Kümenize (set) bir öğe eklediğinizde, aslında map'e bir anahtar ekliyorsunuzdur. Benzersizlik, map'in davranışı tarafından otomatik olarak zorunlu kılınır ve size gerçek küme (set) semantiği sağlar.
Gelecek derslerde, bu deyimsel Go desenini kullanarak kümeleri nasıl oluşturacağınızı, değiştireceğinizi ve onlarla nasıl çalışacağınızı öğreneceksiniz. Bu teknik; benzersiz öğeleri takip etmek, algoritmaları uygulamak ve hızlı üyelik testi gerektiren problemleri çözmek için Go kod tabanlarında yaygın olarak kullanılı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ı
Go'nun yerleşik bir küme (set) veri yapısı yoktur, ancak kümeleri simüle etmek için deyimsel (idiomatic) bir desenle map'leri kullanır:
var mySet map[string]struct{}Boş struct struct{}, bellekte sıfır bayt yer kapladığı için değer türü olarak kullanılır. Map anahtarları benzersiz olmalıdır, bu da benzersiz öğeleri izlemek için otomatik olarak küme semantiği sağlar.
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ışlar6Deyimsel Go: Kümeler
Go'da Küme DeyimiBir Küme OluşturmaKümeye Eleman EklemeEleman Varlığını Kontrol EtmeKümeden Eleman SilmeKüme Üzerinde YinelemeÖzet - Benzersiz Kullanıcı Adları