Eleman Varlığını Kontrol Etme
Coddy'nin GO Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 34 / 68.
Artık kümenize öğeler ekleyebildiğinize göre, bir sonraki temel işlem belirli bir öğenin kümede bulunup bulunmadığını kontrol etmektir. Go'nun "comma ok" deyimi işte burada son derece kullanışlı hâle gelir.
Bir öğenin kümenizde olup olmadığını kontrol etmek için, bir map'te anahtar olup olmadığını kontrol ederken kullandığınız söz diziminin aynısını kullanırsınız:
_, ok := colors["red"]
if ok {
fmt.Println("Red is in the set")
} else {
fmt.Println("Red is not in the set")
}Alt çizgi _, gerçek değerle ilgilenmediğimiz için kullanılır (bu değer her zaman boş bir yapıdır). Yalnızca anahtarın mevcut olup olmadığını bize bildiren boolean ok değişkeniyle ilgileniriz.
Bu deseni daha özlü kod için doğrudan bir if ifadesinde de kullanabilirsiniz:
if _, exists := colors["blue"]; exists {
fmt.Println("Blue is in the set")
}Bu üyelik testi hızlı ve etkilidir; Go'nun optimize edilmiş map uygulamasından yararlanarak gerçek bir küme veri yapısının performans avantajlarını sunar.
Görev
KolayGo set deyimini kullanarak belirli kişilerin bir proje ekibinin parçası olup olmadığını kontrol eden bir ekip üyesi doğrulama sistemi oluşturun. Bu görev, bir kümede üyeliği test etmek için virgül-ok deyiminin nasıl kullanılacağını gösterir.
İki girdi alacaksınız:
- Virgüllerle ayrılmış ekip üyelerini içeren bir dize (örneğin,
"Alice,Bob,Charlie,Diana,Eve") - Virgüllerle ayrılmış kontrol edilecek kişileri içeren bir dize (örneğin,
"Bob,Frank,Alice,Grace,Charlie")
Göreviniz:
- Ekip üyelerini depolamak için Go deyimi
map[string]struct{}kullanarak bir küme oluşturmak - İlk girdi dizesini virgüllere göre bölerek tek tek ekip üyesi adlarını elde etmek
- Boş yapı değişmezi
{}değerini kullanarak her ekip üyesini kümenize eklemek - Kontrol edilecek kişilerin listesini elde etmek için ikinci girdi dizesini virgüllere göre bölmek
- Kontrol edilecek her kişi için üyeliği test etmek üzere virgül-ok deyimini
_, ok := teamSet[person]kullanmak - Kontrol edilen her kişi için doğrulama sonuçlarını görüntülemek:
- Kişi ekipteyse:
"[person] is on the team" - Kişi ekipte değilse:
"[person] is not on the team"
- Kişi ekipteyse:
- Tüm kişileri kontrol ettikten sonra bir özet görüntülemek:
"Team size: [team_member_count]""People checked: [people_checked_count]""Team members found: [found_count]""Non-team members: [not_found_count]"
Girdi dizelerini virgüllere göre bölmek için strings paketini kullanın. Bu görev, virgül-ok deyiminin bir Go kümesinde üyeliği kontrol etmek için hem değeri hem de anahtarın var olup olmadığını belirten bir boolean döndürerek güvenli ve verimli bir yol sunduğunu gösterir.
Kendin dene
package main
import (
"fmt"
"strings"
)
func main() {
// Girdiyi oku
var teamMembersInput string
var peopleToCheckInput string
fmt.Scanln(&teamMembersInput)
fmt.Scanln(&peopleToCheckInput)
// Girdi dizelerini ayrıştır
teamMembers := strings.Split(teamMembersInput, ",")
peopleToCheck := strings.Split(peopleToCheckInput, ",")
// TODO: Kodunuzu aşağıya yazın
// map[string]struct{} kullanarak bir küme oluştur
// Takım üyelerini kümeye ekle
// Virgül ok deyimini kullanarak her kişiyi kontrol et
// Doğrulama sonuçlarını ve özeti görüntüle
}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ıKendi başına pratik yap: Online Go derleyicisi