Menu
Coddy logo textTech

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.

challenge icon

Görev

Kolay

Go 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:

  1. Ekip üyelerini depolamak için Go deyimi map[string]struct{} kullanarak bir küme oluşturmak
  2. İlk girdi dizesini virgüllere göre bölerek tek tek ekip üyesi adlarını elde etmek
  3. Boş yapı değişmezi {} değerini kullanarak her ekip üyesini kümenize eklemek
  4. Kontrol edilecek kişilerin listesini elde etmek için ikinci girdi dizesini virgüllere göre bölmek
  5. Kontrol edilecek her kişi için üyeliği test etmek üzere virgül-ok deyimini _, ok := teamSet[person] kullanmak
  6. 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"
  7. 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
	
}
quiz iconKendini test et

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

Kendi başına pratik yap: Online Go derleyicisi