모든 할 일 보기
Coddy GO 여정의 로직 & 흐름 섹션에 포함된 레슨 — 68개 중 22번째.
챌린지
쉬움작업 관리 시스템을 계속해서 개발하면서, 이제 모든 작업을 사용자 친화적인 형식으로 표시하는 기능을 구현하게 됩니다. 이 챌린지는 작업 컬렉션을 반복하고 명확한 시각적 표시기를 사용하여 각 작업의 완료 상태를 보여주는 데 중점을 둡니다.
두 개의 입력을 받게 됩니다:
- 작업 수를 나타내는 문자열 (예:
"4") - 다음 형식의 작업 데이터를 포함하는 문자열:
"name1:status1,name2:status2,name3:status3"(여기서 status는"true"또는"false"입니다. 예:"Buy groceries:false,Call dentist:true,Finish project:false,Review code:true")
당신의 과제는 다음과 같습니다:
- 이전 챌린지와 동일하게
Name(string) 및Completed(bool) 필드를 가진Task구조체를 정의합니다. Task구조체의 슬라이스를 매개변수로 받는viewAllTasks라는 함수를 만듭니다.viewAllTasks함수 내부에서 슬라이스를 반복하고 다음 형식으로 각 작업을 출력합니다:- 완료된 작업의 경우:
"[x] [task_name]" - 미완료 작업의 경우:
"[ ] [task_name]"
- 완료된 작업의 경우:
- 두 번째 입력에서 작업 데이터를 파싱하여 작업 슬라이스를 생성합니다:
- 입력을 쉼표로 분할하여 개별 작업 항목을 가져옵니다.
- 각 항목에 대해 콜론으로 분할하여 이름과 상태를 분리합니다.
- 상태 문자열을 불리언으로 변환합니다 (
"true"는true로,"false"는false로).
- 생성된 슬라이스를 사용하여
viewAllTasks함수를 호출합니다. - 모든 작업을 표시한 후, 다음 형식으로 요약을 출력합니다:
"Total: [total_count] tasks ([completed_count] completed, [incomplete_count] remaining)"
예를 들어, "Buy groceries:false,Call dentist:true,Finish project:false"라는 작업이 있는 경우, 출력은 적절한 체크박스와 함께 각 작업을 보여준 다음 총 개수와 완료 통계가 포함된 요약을 표시해야 합니다. 이 챌린지는 슬라이스 반복, if 문을 사용한 조건부 서식 지정을 연습하고 사용자에게 작업 진행 상황에 대한 명확한 보기를 제공합니다.
직접 해보기
package main
import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
)
type Task struct {
Name string
Completed bool
}
func viewAllTasks(tasks []Task) {
// TODO: 모든 작업을 표시하는 함수를 구현하세요.
// 완료된 작업의 경우: "[x] [task_name]"
// 미완료 작업의 경우: "[ ] [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: taskData 문자열에서 작업 데이터를 파싱하세요.
// 쉼표로 분할하여 개별 작업 항목을 가져옵니다.
taskEntries := strings.Split(taskData, ",")
_ = taskEntries
// 각 항목에 대해 콜론으로 분할하여 이름과 상태를 분리합니다.
// 상태 문자열을 불리언으로 변환하고 Task 구조체를 생성합니다.
// TODO: 생성된 슬라이스로 viewAllTasks 함수를 호출하세요.
// TODO: 요약을 계산하고 출력하세요.
// 형식: "Total: [total_count] tasks ([completed_count] completed, [incomplete_count] remaining)"
_ = tasks
_ = numTasks
}