Menu
Coddy logo textTech

Kümeden Eleman Silme

Coddy'nin GO Journey'sinin Mantık ve Akış bölümünün bir parçası — ders 35 / 68.

Bazen kümenizden öğeleri çıkarmanız gerekir ve Go, yerleşik delete() fonksiyonunu kullanarak bunu kolaylaştırır. Kümeniz aslında arka planda bir map olduğu için, bir öğeyi çıkarmak, bir map'ten anahtar çıkarmakla tam olarak aynı şekilde çalışır.

Set'inizden bir öğeyi kaldırmak için, set'iniz ve kaldırmak istediğiniz öğe ile birlikte delete() fonksiyonunu kullanın:

delete(colors, "red")

delete() fonksiyonu iki parametre alır: map (kümeniz) ve kaldırmak istediğiniz anahtar. Eğer öğe kümede mevcutsa, kaldırılır. Eğer öğe mevcut değilse, fonksiyon hiçbir şey yapmaz - hata fırlatılmaz.

Bu davranış kümeler için mükemmeldir çünkü başlangıçta orada olup olmadığına bakılmaksızın bir öğenin mevcut olmadığından emin olmak istersiniz. İşlem hızlı ve verimlidir; Go'nun temel map uygulamasının performans avantajlarını korur.

quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

challenge icon

Görev

Kolay

Go set deyimini kullanarak farklı tür koleksiyonlarından kitapları çıkaran bir kütüphane kitap yönetim sistemi oluşturun. Bu görev, çıkarma sürecini takip ederken setlerden öğeleri çıkarmak için delete() fonksiyonunun nasıl kullanılacağını gösterir.

İki girdi alacaksınız:

  • Kurgu koleksiyonundaki kitapları içeren, virgülle ayrılmış bir dize (örneğin, "1984,Dune,Foundation,Neuromancer,Brave New World")
  • Çıkarılacak kitapları içeren, virgülle ayrılmış bir dize (örneğin, "Dune,Harry Potter,Foundation,Twilight,1984")

Göreviniz şunları yapmaktır:

  1. Kurgu kitaplarını saklamak için Go deyimi olan map[string]struct{} kullanarak bir set oluşturun
  2. Bireysel kitap başlıklarını elde etmek için ilk girdi dizesini virgüllerden ayırarak ayrıştırın
  3. Değer olarak boş struct literal {} kullanarak her kitabı setinize ekleyin
  4. Çıkarılacak kitapların listesini elde etmek için ikinci girdi dizesini virgüllerden ayırarak ayrıştırın
  5. Çıkarılacak her kitap için, "comma ok" deyimini kullanarak set içinde var olup olmadığını kontrol edin
  6. İşlenen her kitap için çıkarma sürecini görüntüleyin:
    • Kitap koleksiyonda varsa: "Removing: [book_title]"
    • Kitap koleksiyonda yoksa: "Not found: [book_title]"
  7. Sette var olan kitapları çıkarmak için delete() fonksiyonunu kullanın
  8. Tüm çıkarma isteklerini işledikten sonra bir özet görüntüleyin:
    • "Initial collection size: [initial_count]"
    • "Removal requests: [requests_count]"
    • "Books successfully removed: [removed_count]"
    • "Books not found: [not_found_count]"
    • "Final collection size: [final_count]"
  9. Son olarak, koleksiyonda kalan tüm kitapları listeleyin:
    • Başlık: "Remaining books in fiction collection:"
    • Her kitap ayrı bir satırda: "- [book_title]"
    • Hiç kitap kalmadıysa: "- Collection is empty"

Girdi dizelerini virgüllerden ayırmak için strings paketini kullanın. Bu görev, delete() fonksiyonunun bir Go setinden öğeleri nasıl güvenli bir şekilde çıkardığını gösterir; var olmayan öğeleri çıkarmaya çalışırken bile hata fırlatmaz, bu da onu temizleme işlemleri için mükemmel kılar.

Kopya kağıdı

Go'da bir kümeden (set) öğeleri kaldırmak için yerleşik delete() işlevini kullanın:

delete(colors, "red")

delete() işlevi iki parametre alır: map (kümeniz) ve kaldırmak istediğiniz anahtar. Öğe mevcutsa kaldırılır. Mevcut değilse, işlev hiçbir şey yapmaz - herhangi bir hata fırlatılmaz.

Bu, delete() işlevini kümeler için mükemmel kılar; çünkü başlangıçta orada olup olmadığına bakılmaksızın genellikle bir öğenin mevcut olmadığından emin olmak istersiniz.

Kendin dene

package main

import (
	"bufio"
	"fmt"
	"os"
	"sort"
	"strings"
)

func main() {
	// Boşluk içeren kitap başlıklarını desteklemek için Scanner kullanarak girdiyi oku
	scanner := bufio.NewScanner(os.Stdin)

	scanner.Scan()
	fictionBooks := scanner.Text()
	scanner.Scan()
	booksToRemove := scanner.Text()

	// Girdi dizelerini ayrıştır
	fictionList := strings.Split(fictionBooks, ",")
	removeList := strings.Split(booksToRemove, ",")

	// YAPILACAK: Kodunuzu aşağıya yazın
	// 1. Kurgu kitaplarını saklamak için map[string]struct{} kullanarak bir küme oluşturun
	// 2. fictionList içindeki her kitabı kümeye ekleyin
	// 3. removeList içindeki her kitabı işleyin ve mevcut olup olmadığını kontrol edin
	// 4. Kaldırma işlemini görüntüleyin ve delete() fonksiyonunu kullanın
	// 5. Özet istatistikleri görüntüleyin
	// 6. Koleksiyonda kalan kitapları listeleyin
	// Tutarlı çıktı için kalan kitapları sıralamayı unutmayın

	_ = sort.Strings // sort paketini kullandığınızda bu satırı kaldırın
	_ = fmt.Println  // fmt paketini kullandığınızda bu satırı kaldırın
}
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