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 görev, mevcut dilime yeni görevler ekleyerek görev listenizi genişleten bir işlev oluşturmaya odaklanır.
Önemli Not: Görev adları boşluk içerebileceğinden (örneğin "Buy groceries"), girişin tamamını okumak için bufio.Scanner kullanmanız gerekir. fmt.Scanln işlevi ilk boşlukta okumayı durdurur ve bu da boşluk içeren görev adlarının bozulmasına neden olur. bufio.NewScanner(os.Stdin) kullanın ve tam satırları okumak için scanner.Scan() işlevinin ardından scanner.Text() işlevini çağırın.
İki girdi alacaksınız:
- Mevcut görevlerin sayısını temsil eden bir dize (örneğin,
"2") - Virgüllerle ayrılmış görev adlarını içeren bir dize (örneğin,
"Buy groceries,Call dentist,Finish project")
Göreviniz:
- Önceki görevdeki aynı
TaskyapısınıName(string) veCompleted(bool) alanlarıyla tanımlamak - Parametre olarak bir
Taskyapıları dilimi ve bir görev adı (string) alanaddTaskadlı bir işlev oluşturmak addTaskişlevinin, eklenen görevle birlikte yeni bir dilim döndürmesini sağlamak (yeni görevinCompleteddeğerifalseolarak ayarlanmalıdır)- Boşluk içeren görev adlarını doğru şekilde işlemek için giriş satırlarını okumada
bufio.Scannerkullanmak - İlk girdide belirtilen mevcut görev sayısına göre başlangıç görevleri dilimi oluşturmak:
- Sayı
"0"ise boş bir dilimle başlamak - Sayı
"0"'dan büyükse, adları"Existing Task 1","Existing Task 2"vb. olan ve tamamlanmamış olarak işaretlenen bu sayıda yer tutucu görev oluşturmak
- Sayı
- İkinci girdideki virgülle ayrılmış görev adlarını ayrıştırmak
- Her yeni görevi dilime eklemek için
addTaskişlevinizi kullanmak - Son dilimdeki her görevi şu biçimde yazdırmak:
"Task: [name], Completed: [true/false]" - Toplam görev sayısını şu biçimde yazdırmak:
"Total tasks: [count]"
Örneğin, 1 mevcut göreviniz varsa ve "Buy groceries,Call dentist" eklemek istiyorsanız çıktınızda önce mevcut görev, ardından iki yeni görev ve son olarak toplam sayı gösterilmelidir. Bu görev, append işleviyle dilim değiştirme pratiği yaptırır ve veri yapılarını 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ışlarKendi başına pratik yap: Online Go derleyicisi