Tüm Görevleri Görüntüleme
Coddy'nin GO Journey'sinin Mantık ve Akış bölümünün bir parçası — ders 22 / 68.
Görev
KolayGörev yönetim sisteminize devam ederek, şimdi tüm görevleri kullanıcı dostu bir formatta görüntüleme işlevini uygulayacaksınız. Bu zorluk, görev koleksiyonunuzda gezinmeye ve her bir görevi net görsel göstergeler kullanarak tamamlanma durumuyla birlikte sunmaya odaklanmaktadır.
İki girdi alacaksınız:
- Görev sayısını temsil eden bir dize (örneğin,
"4") - Şu formatta görev verilerini içeren bir dize:
"name1:status1,name2:status2,name3:status3"; burada durum"true"veya"false"değerlerinden biridir (örneğin,"Buy groceries:false,Call dentist:true,Finish project:false,Review code:true")
Göreviniz şunları yapmaktır:
- Önceki zorluklardakiyle aynı,
Name(string) veCompleted(bool) alanlarına sahipTaskyapısını (struct) tanımlayın - Parametre olarak bir
Taskyapısı dilimi (slice) alanviewAllTasksadında bir fonksiyon oluşturun viewAllTasksfonksiyonu içinde, dilim üzerinde gezinin ve her görevi aşağıdaki formatta yazdırın:- Tamamlanmış görevler için:
"[x] [task_name]" - Tamamlanmamış görevler için:
"[ ] [task_name]"
- Tamamlanmış görevler için:
- Görev diliminizi oluşturmak için ikinci girdideki görev verilerini ayrıştırın:
- Bireysel görev girişlerini elde etmek için girdiyi virgüllere göre bölün
- Her giriş için, isim ve durumu ayırmak üzere iki noktaya göre bölün
- Durum dizesini bir boolean değerine dönüştürün (
"true"değeritrue,"false"değerifalseolur)
- Oluşturulan dilim ile
viewAllTasksfonksiyonunuzu çağırın - Tüm görevleri görüntüledikten sonra, şu formatta bir özet yazdırın:
"Total: [total_count] tasks ([completed_count] completed, [incomplete_count] remaining)"
Örneğin, "Buy groceries:false,Call dentist:true,Finish project:false" görevlerine sahipseniz, çıktınız her görevi uygun onay kutularıyla göstermeli ve ardından toplam sayı ve tamamlanma istatistiklerini içeren özeti görüntülemelidir. Bu zorluk, dilim yineleme (slice iteration), if ifadeleriyle koşullu biçimlendirme alıştırması yapar ve kullanıcılara görev ilerlemelerinin net bir görünümünü sunar.
Kendin dene
package main
import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
)
type Task struct {
Name string
Completed bool
}
func viewAllTasks(tasks []Task) {
// YAPILACAK: Tüm görevleri görüntülemek için fonksiyonu gerçekleştirin
// Tamamlanan görevler için: "[x] [task_name]"
// Tamamlanmamış görevler için: "[ ] [task_name]"
}
func main() {
var numTasksStr string
fmt.Scanln(&numTasksStr)
numTasks, _ := strconv.Atoi(numTasksStr)
scanner := bufio.NewScanner(os.Stdin)
scanner.Scan()
taskData := scanner.Text()
var tasks []Task
// YAPILACAK: taskData dizesinden görev verilerini ayrıştırın
// Bireysel görev girişlerini elde etmek için virgüllere göre bölün
taskEntries := strings.Split(taskData, ",")
_ = taskEntries
// Her giriş için, isim ve durumu ayırmak üzere iki noktaya göre bölün
// Durum dizesini boolean'a dönüştürün ve Task yapılarını oluşturun
// YAPILACAK: Oluşturulan dilim ile viewAllTasks fonksiyonunu çağırın
// YAPILACAK: Özeti hesaplayın ve yazdırın
// Biçim: "Total: [total_count] tasks ([completed_count] completed, [incomplete_count] remaining)"
_ = tasks
_ = numTasks
}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