할 일 추가하기
Coddy GO 여정의 로직 & 흐름 섹션에 포함된 레슨 — 68개 중 21번째.
챌린지
쉬움작업 관리 기초를 바탕으로, 이제 시스템에 새로운 작업을 추가하는 핵심 기능을 구현해 보겠습니다. 이 챌린지는 기존 슬라이스에 새로운 작업을 추가하여 작업 목록을 확장하는 함수를 만드는 데 중점을 둡니다.
중요 참고 사항: 작업 이름에 공백이 포함될 수 있으므로(예: "Buy groceries"), 전체 입력 줄을 읽으려면 bufio.Scanner를 사용해야 합니다. fmt.Scanln 함수는 첫 번째 공백에서 읽기를 중단하므로 공백이 포함된 작업 이름이 잘릴 수 있습니다. bufio.NewScanner(os.Stdin)를 사용하고 scanner.Scan()을 호출한 뒤 scanner.Text()를 사용하여 전체 줄을 읽으십시오.
두 가지 입력을 받게 됩니다:
- 기존 작업의 수를 나타내는 문자열 (예:
"2") - 쉼표로 구분된 작업 이름들이 포함된 문자열 (예:
"Buy groceries,Call dentist,Finish project")
여러분의 과제는 다음과 같습니다:
- 이전 챌린지와 동일하게
Name(string) 및Completed(bool) 필드를 가진Task구조체를 정의합니다. Task구조체 슬라이스와 작업 이름(string)을 매개변수로 받는addTask라는 함수를 만듭니다.addTask함수는 작업이 추가된 새 슬라이스를 반환해야 합니다 (새 작업의Completed상태는false로 설정되어야 합니다).- 공백이 포함된 작업 이름을 적절히 처리하기 위해
bufio.Scanner를 사용하여 입력 줄을 읽습니다. - 첫 번째 입력에 지정된 기존 작업 수에 따라 초기 작업 슬라이스를 생성합니다:
- 숫자가
"0"이면 빈 슬라이스로 시작합니다. - 숫자가
"0"보다 크면"Existing Task 1","Existing Task 2"등과 같은 이름을 가진 자리 표시자 작업을 해당 개수만큼 생성하며, 모두 미완료 상태로 표시합니다.
- 숫자가
- 두 번째 입력에서 쉼표로 구분된 작업 이름들을 파싱합니다.
addTask함수를 사용하여 각 새 작업을 슬라이스에 추가합니다.- 최종 슬라이스의 각 작업을
"Task: [name], Completed: [true/false]"형식으로 출력합니다. - 전체 작업 수를
"Total tasks: [count]"형식으로 출력합니다.
예를 들어, 기존 작업이 1개 있고 "Buy groceries,Call dentist"를 추가하려는 경우, 출력에는 기존 작업이 먼저 표시되고 그 뒤에 두 개의 새 작업이 표시된 후 마지막으로 총 개수가 표시되어야 합니다. 이 챌린지는 append 함수를 사용한 슬라이스 조작을 연습하고 데이터 구조를 확장하는 기능을 구축하는 방법을 보여줍니다.
직접 해보기
package main
import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
)
type Task struct {
Name string
Completed bool
}
// TODO: 여기에 addTask 함수를 생성하세요
func main() {
// 입력 라인을 읽기 위한 스캐너 생성
scanner := bufio.NewScanner(os.Stdin)
// 기존 작업의 수 읽기
scanner.Scan()
existingTasksStr := scanner.Text()
// 작업 이름 읽기
scanner.Scan()
taskNamesStr := scanner.Text()
// TODO: 구현 완료하기
// 1. existingTasksStr를 정수로 변환
// 2. 기존 작업으로 초기 슬라이스 생성
// 3. taskNamesStr를 파싱하고 새 작업 추가
// 4. 모든 작업과 총 개수 출력
}