Menambahkan Tugas
Termasuk bagian Logika & Alur dalam perjalanan GO di Coddy. Pelajaran 21 dari 68.
Tantangan
MudahSetelah membangun dasar pengelolaan tugas, sekarang kamu akan menerapkan fungsionalitas inti untuk menambahkan tugas baru ke sistemmu. Tantangan ini berfokus pada pembuatan fungsi yang memperluas list tugasmu dengan menambahkan tugas baru ke slice yang sudah ada.
Catatan penting: Karena nama tugas dapat berisi spasi (seperti "Buy groceries"), kamu perlu menggunakan bufio.Scanner untuk membaca seluruh baris input. Fungsi fmt.Scanln berhenti membaca pada spasi pertama, sehingga nama tugas yang mengandung spasi akan terpotong. Gunakan bufio.NewScanner(os.Stdin) dan panggil scanner.Scan(), lalu scanner.Text() untuk membaca baris secara lengkap.
Kamu akan menerima dua input:
- String yang menunjukkan jumlah tugas yang sudah ada (misalnya,
"2") - String yang berisi nama-nama tugas yang dipisahkan dengan koma (misalnya,
"Buy groceries,Call dentist,Finish project")
Tugasmu adalah:
- Definisikan struct
Taskyang sama seperti pada tantangan sebelumnya, dengan fieldName(string) danCompleted(bool) - Buat fungsi bernama
addTaskyang menerima slice berisi structTaskdan nama tugas (string) sebagai parameter - Fungsi
addTaskharus mengembalikan slice baru dengan tugas yang ditambahkan (tugas baru harus memilikiCompleteddengan nilaifalse) - Gunakan
bufio.Scanneruntuk membaca baris input dengan benar agar nama tugas yang berisi spasi dapat ditangani - Buat slice awal berisi tugas berdasarkan jumlah tugas yang sudah ada seperti yang ditentukan dalam input pertama:
- Jika jumlahnya
"0", mulai dengan slice kosong - Jika jumlahnya lebih besar dari
"0", buat placeholder tugas sebanyak jumlah tersebut dengan nama seperti"Existing Task 1","Existing Task 2", dan seterusnya, semuanya ditandai belum selesai
- Jika jumlahnya
- Urai nama-nama tugas yang dipisahkan koma dari input kedua
- Gunakan fungsi
addTaskuntuk menambahkan setiap tugas baru ke slice - Cetak setiap tugas dalam slice akhir dengan format:
"Task: [name], Completed: [true/false]" - Cetak jumlah total tugas dengan format:
"Total tasks: [count]"
Misalnya, jika kamu memiliki 1 tugas yang sudah ada dan ingin menambahkan "Buy groceries,Call dentist", outputmu harus menampilkan tugas yang sudah ada terlebih dahulu, diikuti oleh dua tugas baru, lalu jumlah totalnya. Tantangan ini melatih manipulasi slice dengan fungsi append dan menunjukkan cara membangun fungsionalitas yang memperluas struktur datamu.
Coba sendiri
package main
import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
)
type Task struct {
Name string
Completed bool
}
// TODO: Buat fungsi addTask di sini
func main() {
// Buat scanner untuk membaca baris input
scanner := bufio.NewScanner(os.Stdin)
// Baca jumlah tugas yang sudah ada
scanner.Scan()
existingTasksStr := scanner.Text()
// Baca nama tugas
scanner.Scan()
taskNamesStr := scanner.Text()
// TODO: Selesaikan implementasinya
// 1. Ubah existingTasksStr menjadi bilangan bulat
// 2. Buat slice awal berisi tugas yang sudah ada
// 3. Uraikan taskNamesStr dan tambahkan tugas baru
// 4. Cetak semua tugas dan jumlah totalnya
}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