이번 편의 목표: 개수가 정해지지 않은 연체 일수를 슬라이스에 담고 합계를 구합니다.

배열의 길이는 타입에 고정됩니다. 슬라이스는 그 배열을 가리키는 길이 있는 목록입니다. append는 뒤에 값을 붙인 슬라이스를 돌려줍니다. 반환값을 다시 넣어야 늘어난 목록을 쓸 수 있습니다.

Go
package main

import "fmt"

func main() {
	days := []int{1, 0, 3}
	days = append(days, 2)
	total := 0
	for _, day := range days {
		if day > 0 {
			total += day * 100
		}
	}
	fmt.Println(total)
	fmt.Println(len(days))
}

1, 0, 3에 2가 추가됩니다. 0은 연체가 아니므로 건너뜁니다. 100, 300, 200을 더하면 첫째 줄은 600입니다. 둘째 줄은 길이 4입니다. range는 인덱스와 값을 차례로 줍니다. 인덱스를 쓰지 않으면 _ 로 버립니다.

len은 지금 들어 있는 개수입니다. append가 돌려준 슬라이스를 저장하지 않으면 추가한 2를 이후의 반복에서 보지 못합니다.

직접 해 보기

append(days, 2) 대신 append(days, 5)를 쓰고 합계가 900인지 확인하세요.

해설

1, 3, 5만 요금이 있습니다. 100과 300과 500의 합은 900입니다. 길이는 그대로 4입니다.