Görev Ekleme
Coddy'nin GO Journey'sinin Mantık ve Akış bölümünün bir parçası — ders 21 / 68.
Görev
KolayGörev yönetimi temelinizi geliştirerek, şimdi sisteminize yeni görevler eklemek için temel işlevselliği uygulayacaksınız. Bu zorluk, mevcut dilime (slice) yeni görevler ekleyerek görev listenizi genişleten bir fonksiyon oluşturmaya odaklanmaktadır.
Önemli Not: Görev adları boşluk içerebileceğinden (örneğin "Buy groceries"), tüm girdi satırlarını okumak için bufio.Scanner kullanmanız gerekecektir. fmt.Scanln fonksiyonu ilk boşlukta okumayı durdurur, bu da boşluk içeren görev adlarını bozar. Tam satırları okumak için bufio.NewScanner(os.Stdin) kullanın ve scanner.Scan() ardından scanner.Text() fonksiyonlarını çağırın.
İki girdi alacaksınız:
- Mevcut görevlerin sayısını temsil eden bir dize (örneğin,
"2") - Virgülle ayrılmış görev adlarını içeren bir dize (örneğin,
"Buy groceries,Call dentist,Finish project")
Göreviniz şunları yapmaktır:
- Önceki zorluktaki
Name(string) veCompleted(bool) alanlarına sahip aynıTaskyapısını (struct) tanımlayın - Parametre olarak bir
Taskyapısı dilimi ve bir görev adı (string) alanaddTaskadında bir fonksiyon oluşturun addTaskfonksiyonu, eklenen görevle birlikte yeni bir dilim döndürmelidir (yeni görevinCompleteddeğerifalseolarak ayarlanmalıdır)- Boşluk içeren görev adlarını düzgün bir şekilde işlemek için girdi satırlarını okurken
bufio.Scannerkullanın - İlk girdide belirtilen mevcut görev sayısına göre başlangıçta bir görev dilimi oluşturun:
- Sayı
"0"ise, boş bir dilimle başlayın - Sayı
"0"'dan büyükse,"Existing Task 1","Existing Task 2"gibi adlara sahip ve tamamı tamamlanmamış olarak işaretlenmiş o kadar sayıda yer tutucu görev oluşturun
- Sayı
- İkinci girdideki virgülle ayrılmış görev adlarını ayrıştırın
- Her yeni görevi dilime eklemek için
addTaskfonksiyonunuzu kullanın - Son dilimdeki her görevi şu formatta yazdırın:
"Task: [name], Completed: [true/false]" - Toplam görev sayısını şu formatta yazdırın:
"Total tasks: [count]"
Örneğin, 1 mevcut göreviniz varsa ve "Buy groceries,Call dentist" eklemek istiyorsanız, çıktınız önce mevcut görevi, ardından iki yeni görevi ve son olarak toplam sayıyı göstermelidir. Bu zorluk, append fonksiyonu ile dilim manipülasyonu pratiği yaptırır ve veri yapılarınızı genişleten işlevselliğin nasıl oluşturulacağını gösterir.
Kendin dene
package main
import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
)
type Task struct {
Name string
Completed bool
}
// TODO: Burada addTask fonksiyonunu oluşturun
func main() {
// Giriş satırlarını okumak için tarayıcı (scanner) oluşturun
scanner := bufio.NewScanner(os.Stdin)
// Mevcut görevlerin sayısını okuyun
scanner.Scan()
existingTasksStr := scanner.Text()
// Görev adlarını okuyun
scanner.Scan()
taskNamesStr := scanner.Text()
// TODO: Uygulamayı tamamlayın
// 1. existingTasksStr değerini tam sayıya dönüştürün
// 2. Mevcut görevlerle başlangıç dilimini (slice) oluşturun
// 3. taskNamesStr değerini ayrıştırın ve yeni görevleri ekleyin
// 4. Tüm görevleri ve toplam sayıyı yazdırın
}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ışlar