배열
- Golang
- 2021년 5월 26일
배열은 연속된 메모리에 저장된 자료구조로 다른 자료구조 중 Random Access가 가장빠르고 고정된 길이의 자료구조이다. 배열과 비슷한 자료구조로 go에는 slice가 존재하는데 slice는 동적인 길이의 배열과 같다.
1. 선언 방식
func main(){
var a [5]int
}
배열은 고정된 size의 자료구조이기 때문에 변수를 선언하는 방식에서 타입을 **[]**를 이용해서 size를 선언해주면 된다. 배열안의 값들의 기본값은 제로값(zero value)로 할당된다.
a := [5]int{1,2,3,4,5}
b := [5]int{1,2,3}
for _,v := range a{
fmt.Print(v," ") //1,2,3,4,5
}
for _,v := range b{
fmt.Print(v," ") //1,2,3,0,0
}
배열을 선언하면서 바로 초기화를 하고 싶은 경우에는 := 를 이용해서 위와 같이 선언과 초기화를 동시에 할 수 있으며 초기화를 하지 않은 메모리에는 zero value가 들어간다.
2. 배열의 사용법
a := [5]int{1,2,3,4,5}
fmt.Print(a[1]) //2
a[1] = 0;
fmt.Print(a[1]) //0
다른 언어의 배열 사용법과 같이 변수뒤에 [] 를 이용하여 특정 index메모리에 접근을 할 수 있으며 조회,수정,삽입이 가능하다.
3. 배열의 메모리 크기
1차원 배열,2차원 배열, 그 이상의 배열이더라도 총 선언된 길이 * 자료형 메모리 크기의 메모리 size를 갖는다.
예를 들어 a := [5]int 라면 int가 32bit(4byte)이므로 4byte _ 5의 메모리 size만큼을 갖으며, b := [2][5]int 라면 4byte _ 2 * 5 만큼의 size를 갖는다.
Reference
『Tucker의 Go 언어 프로그래밍』 스터디 요약 노트