[Go 언어] 32. 슬라이스에 append 함수로 순차 보관

안녕하세요. 언제나 휴일, 언휴예요.

슬라이스의 원소 개수는 len 함수를 통해 확인할 수 있고 저장소 용량은 cap으로 확인할 수 있어요. 그리고 append 함수를 이용하여 순차적으로 보관할 수 있어요. 다음 소스 코드는 5명의 학생 성적은 배열에 이미 갖고 있는 상태에서 슬라이스를 생성하고 나머지 5명의 성적은 최종 사용자로부터 입력받는 예제 코드예요.

// 5명 성적은 슬라이스에 초기 설정, 5명의 성적은 입력받기
package main

import "fmt"

func main() {
    var arr [5]int = [5]int{90, 88, 76, 80, 99}
    var scores []int = make([]int, 5, 10)
    var i int

    for i = 0; i < 5; i++ {
        scores[i] = arr[i]
    }

    fmt.Printf("저장소 크기:%d 보관한 자료 개수:%d\n", cap(scores), len(scores))
    var score int
    for i = 5; i < 10; i++ {
        fmt.Printf("%d 번 성적:", i+1)
        fmt.Scanln(&score)
        scores = append(scores, score)
        fmt.Printf("저장소 크기:%d 보관한 자료 개수:%d\n", cap(scores), len(scores))
    }

    fmt.Println("==== 학생 성적 출력 ====")

    var sum int
    for i = 0; i < 10; i++ {
        sum += scores[i]
        fmt.Printf("%d번 성적:%d\n", i+1, sum)
    }
    fmt.Printf("총점:%d\n", sum)
}

실행 결과는 다음과 같아요.

저장소 크기:10 보관한 자료 개수:5
6 번 성적:90
저장소 크기:10 보관한 자료 개수:6
7 번 성적:60
저장소 크기:10 보관한 자료 개수:7
8 번 성적:75
저장소 크기:10 보관한 자료 개수:8
9 번 성적:40
저장소 크기:10 보관한 자료 개수:9
10 번 성적:96
저장소 크기:10 보관한 자료 개수:10
==== 학생 성적 출력 ====
1번 성적:90
2번 성적:178
3번 성적:254
4번 성적:334
5번 성적:433
6번 성적:523
7번 성적:583
8번 성적:658
9번 성적:698
10번 성적:794
총점:794

이번에는 슬라이스에 값을 순차 보관하는 append 함수를 알아보기로 해요. append 함수는 입력 인자가 가변 길이로 여러 개의 값을 인자로 전달하여 여러 개의 값을 한꺼번에 저장할 수도 있어요. 다음은 이를 확인하는 간략한 코드예요.

//슬라이스에 append 함수로 여러 개의 값을 한꺼번에 추가
package main

import "fmt"

func main() {
    var datas []int
    fmt.Println(datas)
    datas = append(datas, 9, 8, 7, 6, 5, 4)
    fmt.Println(datas)
}

실행 결과는 다음과 같아요.

[]
[9 8 7 6 5 4]