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 eleman ekleyebildiğinize göre, bir sonraki temel işlem belirli bir elemanın kümede var olup olmadığını kontrol etmektir. Burası Go'nun "comma ok" deyiminin inanılmaz derecede yararlı hale geldiği yerdir.
Kümenizde bir öğenin var olup olmadığını kontrol etmek için, bir map içindeki anahtarı kontrol etmekle aynı söz dizimini 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 _ kullanılır çünkü gerçek değerle (ki bu her zaman boş bir struct'tır) ilgilenmiyoruz. Sadece anahtarın var olup olmadığını bize söyleyen boolean ok değişkeni ile ilgileniyoruz.
Daha kısa ve öz bir kod için bu deseni 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 verimlidir; Go'nun optimize edilmiş map uygulamasından yararlanarak size gerçek bir set veri yapısının performans avantajlarını sunar.
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.
Görev
KolayGo küme (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 meydan okuma, bir kümede üyelik testi yapmak için comma ok deyiminin nasıl kullanılacağını gösterir.
İki girdi alacaksınız:
- Virgülle ayrılmış ekip üyelerini içeren bir dize (örneğin,
"Alice,Bob,Charlie,Diana,Eve") - Virgülle ayrılmış kontrol edilecek kişileri içeren bir dize (örneğin,
"Bob,Frank,Alice,Grace,Charlie")
Göreviniz şunları yapmaktır:
- Ekip üyelerini saklamak için Go deyimi olan
map[string]struct{}kullanarak bir küme oluşturun - Bireysel ekip üyesi adlarını almak için ilk girdi dizesini virgüllerden ayırarak ayrıştırın
- Değer olarak boş struct literal
{}kullanarak her ekip üyesini kümenize ekleyin - Doğrulanacak kişilerin listesini almak için ikinci girdi dizesini virgüllerden ayırarak ayrıştırın
- Kontrol edilecek her kişi için, üyelik testi yapmak üzere comma ok deyimini
_, ok := teamSet[person]kullanın - Kontrol edilen her kişi için doğrulama sonuçlarını görüntüleyin:
- Eğer kişi ekipteyse:
"[person] is on the team" - Eğer kişi ekipte değilse:
"[person] is not on the team"
- Eğer kişi ekipteyse:
- Tüm kişileri kontrol ettikten sonra bir özet görüntüleyin:
"Team size: [team_member_count]""People checked: [people_checked_count]""Team members found: [found_count]""Non-team members: [not_found_count]"
Girdi dizelerini virgüllerden ayırmak için strings paketini kullanın. Bu meydan okuma, comma ok deyiminin bir Go kümesinde üyelik kontrolü yapmak için hem değeri hem de anahtarın var olup olmadığını belirten bir boolean döndürerek nasıl güvenli ve verimli bir yol sağladığını gösterir.
Kopya kağıdı
Bir öğenin bir kümede (map) var olup olmadığını kontrol etmek için "comma ok" deyimini kullanın:
_, ok := colors["red"]
if ok {
fmt.Println("Red is in the set")
} else {
fmt.Println("Red is not in the set")
}Alt çizgi _ değeri yok sayar, çünkü biz sadece anahtarın var olup olmadığını belirten boolean ok değişkeniyle ilgileniyoruz.
Bu deseni doğrudan bir if ifadesinde de kullanabilirsiniz:
if _, exists := colors["blue"]; exists {
fmt.Println("Blue is in the set")
}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 (set) oluşturun
// Ekip üyelerini kümeye ekleyin
// Her bir kişiyi "comma ok" deyimiyle kontrol edin
// Doğrulama sonuçlarını ve özeti görüntüleyin
}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ı