Menu
CoddyTech

Melihat Semua Tugas

Termasuk bagian Logika & Alur dalam perjalanan GO di Coddy. Pelajaran 22 dari 68.

challenge icon

Tantangan

Mudah

Melanjutkan 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:

  1. Definisikan struct Task yang sama seperti pada tantangan sebelumnya, dengan field Name (string) dan Completed (bool)
  2. Buat fungsi bernama viewAllTasks yang menerima slice berisi struct Task sebagai parameter
  3. 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]"
  4. 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" menjadi true, "false" menjadi false)
  5. Panggil fungsi viewAllTasks dengan slice yang telah dibuat
  6. 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

Latihan sendiri: Compiler Go online