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

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

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

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


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

 

 슬라이스도 생성하면서 값을 초기 설정할 수 있어요. 이 때는 원소 개수를 명시하지 않다는 점 빼고는 배열 초기화와 같아요.

var name[] type = []type{값 목록}

 

 이전 예제에서는 5명의 학생 성적을 배열에 갖고 있는 상태에서 출발했었죠. 이번에는 슬라이스를 선언하면서 5명의 학생 성적으로 초기값을 설정한 상태에서 나머지 5명의 성적을 최종 사용자로부터 입력받는 예제 코드예요.

// 슬라이스 초기화 후에 성적 입력

package main

 

import "fmt"

 

func main() {

    var scores []int = []int{90, 88, 76, 80, 99}

    var i int

 

    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)

}

 

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

저장소 크기:5 보관한 자료 개수:5

6 번 성적:90

저장소 크기:10 보관한 자료 개수:6

7 번 성적:89

저장소 크기:10 보관한 자료 개수:7

8 번 성적:65

저장소 크기:10 보관한 자료 개수:8

9 번 성적:77

저장소 크기:10 보관한 자료 개수:9

10 번 성적:45

저장소 크기:10 보관한 자료 개수:10

==== 학생 성적 출력 ====

1번 성적:90

2번 성적:178

3번 성적:254

4번 성적:334

5번 성적:433

6번 성적:523

7번 성적:612

8번 성적:677

9번 성적:754

10번 성적:799

총점:799


관련 게시글

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

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

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

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

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

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

반응형