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 sisteminizle devam ederek, şimdi tüm görevleri kullanıcı dostu bir biçimde görüntüleme işlevini uygulayacaksınız. Bu alıştırma, görev koleksiyonunuzda yineleme yapmaya ve her görevi tamamlanma durumunu net görsel göstergeler kullanarak sunmaya odaklanır.
İki girdi alacaksınız:
- Görevlerin sayısını temsil eden bir dize (ör.
"4") - Görev verilerini şu biçimde içeren bir dize:
"name1:status1,name2:status2,name3:status3"; burada durum ya"true"ya da"false"olur (ör."Buy groceries:false,Call dentist:true,Finish project:false,Review code:true")
Göreviniz:
- Önceki alıştırmalardaki aynı
Taskstruct'ını,Name(string) veCompleted(bool) alanlarıyla tanımlayın - Parametre olarak bir
Taskstruct dilimi alanviewAllTasksadlı bir işlev oluşturun viewAllTasksişlevinin içinde dilim üzerinde yineleme yapın ve her görevi şu biçimde yazdırın:- Tamamlanan görevler için:
"[x] [task_name]" - Tamamlanmayan görevler için:
"[ ] [task_name]"
- Tamamlanan görevler için:
- Görev diliminizi oluşturmak için ikinci girdideki görev verilerini ayrıştırın:
- Tek tek görev kayıtlarını elde etmek için girdiyi virgüllere göre bölün
- Adı ve durumu ayırmak için her kaydı iki noktaya göre bölün
- Durum dizesini bir boolean değere dönüştürün (
"true",trueolur;"false",falseolur)
- Oluşturduğunuz dilimle
viewAllTasksişlevinizi çağırın - Tüm görevleri görüntüledikten sonra şu biçimde 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ıyı ve tamamlanma istatistiklerini içeren özeti görüntülemelidir. Bu alıştırma, dilim yinelemesini, if ifadeleriyle koşullu biçimlendirmeyi uygular ve kullanıcılara görev ilerlemelerini net bir şekilde görme olanağı 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ışlarKendi başına pratik yap: Online Go derleyicisi