1-1. 배열의 선언
Go에서 배열을 선언하는 방법은 다음과 같습니다.
package main
import "fmt"
func main() {
var a [5]int
fmt.Println("a:", a)
var b = [5]int{}
fmt.Println("b:", b)
var c = [5]int{1, 2, 3, 4, 5}
fmt.Println("c:", c)
var d = [...]int{1, 2, 3}
fmt.Println("d:", d)
}
a: [0 0 0 0 0]
b: [0 0 0 0 0]
c: [1 2 3 4 5]
d: [1 2 3]
배열은 모든 요소가 같은 타입이어야 합니다.
그래서 값을 지정하지 않을 경우엔, 그 타입의 제로 값으로 초기화됩니다. (a와 b참고)
c처럼 배열 리터럴로 요소 값을 넣어 선언할 수도 있습니다.
배열 리터럴로 배열을 초기화할 때, 개수를 넣지 않고 '...'를 이용할 수도 있습니다.(d참고)
배열의 요소를 사용할 때는 다음과 같이 인덱스를 이용하면 됩니다.
package main
import "fmt"
func main() {
var a = [5]int{1, 2, 3, 4, 5} // 인덱스 : 0,1,2,3,4
fmt.Println("1번째 요소:", a[0], "다섯번째 요소:", a[4])
}
1번째 요소: 1 다섯번째 요소: 5
단, 주의할 점이 있습니다.
그것은 배열의 크기를 초과하거나 또는 음수인 인덱스를 사용하면 안 된다는 것입니다.
아래와 같이 말이죠.
package main
import "fmt"
func main() {
var a = [5]int{1, 2, 3, 4, 5} // 인덱스 : 0,1,2,3,4
fmt.Println("주의!", a[5])
}
.\example.go:9:42: invalid array index 5 (out of bounds for 5-element array)
1-2. 배열의 비교
package main
import "fmt"
func main() {
var a = [5]int{1, 2, 3, 4, 5}
var b = [...]int{1, 2, 3, 4, 5}
fmt.Println("a = b:", a == b)
var c = [5]int{0, 2, 3, 4, 5}
var d = [...]int{1, 2, 3, 4, 5}
fmt.Println("c = d:", c == d)
}
a = b: true
c = d: false
'=='와 '!='를 비교하면 배열 간 비교를 할 수 있습니다.
1-3. 다차원 배열
Go에서의 다차원 배열 선언 방법은 다음과 같습니다.
package main
import "fmt"
func main() {
var a [3][6]int
fmt.Println("a:", a)
}
a: [[0 0 0 0 0 0] [0 0 0 0 0 0] [0 0 0 0 0 0]]
다차원 배열의 요소는 배열입니다.
위의 예시에서는 '요소가 6개인 배열'을 3개 사용하는 배열을 선언했습니다.
1-4. 배열의 길이
배열의 길이는 len을 이용할 수 있습니다.
package main
import "fmt"
func main() {
var a = [...]int{1, 2, 3}
fmt.Println("a의 길이:", len(a))
var b [5]int
fmt.Println("b의 길이:", len(b))
var c [3][6]int
fmt.Println("c의 길이:", len(c))
}
a의 길이: 3
b의 길이: 5
c의 길이: 3
1-5. 배열이 잘 사용되지 않는 이유
Go에서 배열은 많이 사용되지 않습니다.
이유는 변수로 배열의 크기를 정할 수 없기 때문인데요.
아래의 예시를 참고해주세요.
package main
import "fmt"
func main() {
var s = 5
var a [s]int
fmt.Println("a:", a)
}
.\example.go:8:8: non-constant array bound s
Go는 배열의 크기도 배열 타입의 일부로 간주합니다.
그래서 타입은 실행 중이 아닌, 컴파일 단계에서 해석이 되어야 하기 때문에 위와 같은 에러가 발생하게 됩니다.
이런 제약 때문에 처음부터 크기를 정할 수 있는 경우가 아니라면, 배열은 잘 쓰이지 않습니다.
다음 글에서는 배열 대신에 많이 쓰이는 슬라이스에 대해 작성해보도록 하겠습니다.
Go - 기본적인 데이터 타입과 선언 (2) (0) | 2022.11.02 |
---|---|
Go - 기본적인 데이터 타입과 선언 (1) (0) | 2022.11.01 |
zlib을 이용한 데이터 압축 (0) | 2022.10.09 |
Go를 이용하여 가볍게 알아보는 Base64 (0) | 2022.06.10 |
댓글 영역