언어 자료구조 알고리즘/구글 Go

[구글 Go 하자] 32. 슬라이스에 append 함수로 순차 보관

언제나휴일 2016. 12. 17. 05:25
반응형

[구글 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]


관련 게시글

[구글 Go 하자] 31. 동적 배열, 슬라이스 기초

[구글 Go 하자] 33. 슬라이스가 꽉 찰 때 append 함수를 사용하면 알아서 늘려줘요.

[구글 Go 하자] 34.슬라이스도 초기 값을 설정할 수 있어요.

[구글 Go 하자] 35. 배열의 대입 연산은 값 복사, 슬라이스는 참조

[구글 Go 하자] 36. copy 함수를 사용하면 원소 값을 복사할 수 있어요.

[구글 Go 하자] 37. 슬라이스[start:last]로 부분 슬라이스를 만들 수 있어요.

반응형