티스토리 뷰

 


| Go언어 배열(Array)

 

배열과 slice의 관계

- 배열은 용량, 길이 항상 같다

- 배열 vs 슬라이스의 차이점을 알아야한다

- 길이고정 vs 길이가변

- 값 type vs 참조 type

- 복사 전달 vs 참조 값 전달

- 전체 비교연산자 사용가능 vs 비교 연산자 사용 불가

- 대부분 슬라이스를 사용한다

- 대표적으로 cap() & len() 메서드가 존재한다

cap : 배열, 슬라이스 용량

len : 배열, 슬라이스 개수

 

- 참고 사이트

 

 

배열 선언 문법

package main

func main() {

	//배열 선언 방법
	var arr1 [5]int
	var arr2 [5]int = [5]int{1, 2, 3, 4, 5}
	var arr3 = [5]int{1,2,3,4,5}
	arr4 := [5]int{1,2,3,4,5} // 짧은 선언
	arr5 := [5]int{1,2,3} // 1,2,3 뒤에 나머지 0으로 초기화
	arr6 := [...]int{1,2,3,4,5} // 배열 크기 자동 맞춤

	//5*5 2차원배열 출력
	// [[1,2,3,4,5],[6,7,8,9,10],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0]]
	arr7 := [5][5]int{
		{1,2,3,4,5}, // 0번째 index
		{6,7,8,9,10}, //1 번째 index
	}

	arr1[2] = 5 // [0,0,2,0,0,0]
}

여기서 주의해야할 점

- arr1과 같이 선언하는 경우 0으로 초기화된 배열이 생성된다.

- arr2와 같이 선언하는 경우 배열의 type과 안에 원소의 개수까지 정확하게 일치해야 한다.

 

 

| 배열 순회

package main

import "fmt"

func main() {

	//배열 순회

	arr1 := [5]int{1, 10, 100, 1000, 10000}

	//case1
	for i := 0; i < len(arr1); i++ {
		fmt.Println(i)
	}

	//case2 range활용
	for _, v := range arr1 {
		fmt.Print(v)
		fmt.Println()
	}

	//case2-1
	for i := range arr1 {
		fmt.Print(i)
	}

}

 

정적인 for문으로 접근할 수 있지만, range 문법을 활용하여 index와 value 값을 쉽게 순회할 수 있다.

'golang' 카테고리의 다른 글

[golang]고언어 정렬(sort)과 복사(copy)  (0) 2021.07.04
[golang]슬라이스(slice)란?  (0) 2021.07.04
[golang]Golang 문자열 연산과 결합  (0) 2021.07.04
[golang]Go언어 문자열  (0) 2021.07.02
[golang]문법 정리  (0) 2021.07.01