Melihat Semua Tugas
Termasuk bagian Logika & Alur dalam perjalanan GO di Coddy. Pelajaran 22 dari 68.
Tantangan
MudahMelanjutkan sistem pengelolaan tugas, sekarang kamu akan menerapkan fungsi untuk menampilkan semua tugas dalam format yang mudah digunakan. Tantangan ini berfokus pada perulangan melalui kumpulan tugasmu dan menampilkan setiap tugas beserta status penyelesaiannya menggunakan penanda visual yang jelas.
Kamu akan menerima dua input:
- string yang mewakili jumlah tugas (misalnya,
"4") - string yang berisi data tugas dalam format:
"name1:status1,name2:status2,name3:status3", dengan status berupa"true"atau"false"(misalnya,"Buy groceries:false,Call dentist:true,Finish project:false,Review code:true")
Tugasmu adalah:
- Definisikan struct
Taskyang sama seperti pada tantangan sebelumnya, dengan fieldName(string) danCompleted(bool) - Buat fungsi bernama
viewAllTasksyang menerima slice berisi structTasksebagai parameter - Di dalam fungsi
viewAllTasks, lakukan perulangan melalui slice dan cetak setiap tugas dengan format berikut:- Untuk tugas yang selesai:
"[x] [task_name]" - Untuk tugas yang belum selesai:
"[ ] [task_name]"
- Untuk tugas yang selesai:
- Parse data tugas dari input kedua untuk membuat slice tugas:
- Pisahkan input berdasarkan koma untuk mendapatkan setiap entri tugas
- Untuk setiap entri, pisahkan berdasarkan titik dua untuk memisahkan nama dan status
- Ubah string status menjadi boolean (
"true"menjaditrue,"false"menjadifalse)
- Panggil fungsi
viewAllTasksdengan slice yang telah dibuat - Setelah menampilkan semua tugas, cetak ringkasan dengan format:
"Total: [total_count] tasks ([completed_count] completed, [incomplete_count] remaining)"
Misalnya, jika kamu memiliki tugas "Buy groceries:false,Call dentist:true,Finish project:false", output-mu harus menampilkan setiap tugas dengan kotak centang yang sesuai, lalu menampilkan ringkasan jumlah total dan statistik penyelesaian. Tantangan ini melatih perulangan pada slice dan pemformatan bersyarat dengan pernyataan if, serta memberikan gambaran yang jelas kepada pengguna tentang progres tugas mereka.
Coba sendiri
package main
import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
)
type Task struct {
Name string
Completed bool
}
func viewAllTasks(tasks []Task) {
// TODO: Implementasikan fungsi untuk menampilkan semua tugas
// Untuk tugas yang selesai: "[x] [task_name]"
// Untuk tugas yang belum selesai: "[ ] [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
// TODO: Uraikan data tugas dari string taskData
// Pisahkan berdasarkan koma untuk mendapatkan setiap entri tugas
taskEntries := strings.Split(taskData, ",")
_ = taskEntries
// Untuk setiap entri, pisahkan berdasarkan titik dua untuk memisahkan nama dan status
// Ubah string status menjadi boolean dan buat struct Task
// TODO: Panggil fungsi viewAllTasks dengan slice yang telah dibuat
// TODO: Hitung dan cetak ringkasan
// Format: "Total: [total_count] tasks ([completed_count] completed, [incomplete_count] remaining)"
_ = tasks
_ = numTasks
}Semua pelajaran di Logika & Alur
1Alur Kontrol Lanjutan
switch dengan `fallthrough`Keluar dari Perulangan BersarangMelanjutkan Perulangan TertentuPernyataan `goto`Rangkuman, Kontrol Perulangan Lanjutan4Proyek: Daftar Tugas Sederhana
Menyiapkan ProyekMenambahkan Tugas2Struct dan Method
Mendefinisikan Method pada StructPenerima NilaiPenerima PointerMemilih PenerimaMethod vs FungsiRekap: Perilaku Struct5Map secara Mendalam
Map Berisi StructPointer sebagai Nilai MapMenguji Map NilMembandingkan MapRingkasan: Penghitung Frekuensi Kata8Proyek: Inventaris Sederhana
Gambaran Umum ProyekMemeriksa Stok3Interface (Dasar)
Apa Itu Interface?Mendefinisikan InterfaceMengimplementasikan InterfaceMenggunakan Tipe InterfaceInterface KosongType AssertionType SwitchRingkasan: Bentuk dan PerilakuLatihan sendiri: Compiler Go online