[Golang] map, slice, list 정리
Array
- 고정길이 배열
- 배열 크기를 동적으로 증가시키거나 부분 배열을 잘라내는 기능 없음.
- 배열의 크기를 데이터 타입 앞에 써줘야 함
1
2
3
4
5
6
7
package main
func main() {
var a [3] int
a[0] = 1
a[1] = 2
a[2] = 3
println(a[1])
- 초기화
- 값을 지정해주지 않으면 0으로 초기화가 됨.
1
2
3
var a = [3]int{1,2,3}
var b = [...]int{1,2,3}
Slice
- 가변길이 배열. Python 의 List와 유사!
- Array와는 다르게 고정된 크기를 미리 지정하지 않을 수 있고, 동적으로 변경 가능.
- 부분 잘라내기 가능
- 선언
var v []T
- make(
slice_type
,slice_length
,capacity
) 함수- capacity : 내부 배열의 최대 길이
- 생략 시 capacity는 length와 동일
- 모든 요소가 zero value인 슬라이스를 생성함.
- capacity : 내부 배열의 최대 길이
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package main
func main() {
var a []int
a = []int{1,2,3}
a[1] = 10
println(a)
}
---
func main() {
s := make([]int, 5, 10)
println(len(s), cap(s))
}
---
ss := s[0:11]
// 가변길이보다 더 큰 값을 주면 에러 발생
-> panic: runtime error: slice bounds out of range
---
s := make([]int, 5, 10)
ss := s[0:10]
fmt.Println(s)
fmt.Println(ss)
ss = append(ss, 1)
sss := ss[0:11]
fmt.Println(sss)
Sub-slice
1 2 3 4
func main(){ s := []int{0,1,2,3,4,5} s = s[2:5] }
Append & Copy
1 2 3 4 5
func main() { s := []int{0,1} s = append(s,2) s = append(s,3,4,5) }
Map
- Key-value 쌍으로 된 데이터 타입.
- Python의 Dictionary와 유사
1
2
3
4
5
6
7
8
9
10
11
12
13
var sMap map[int]string
---
sMap = make(map[int]string)
---
tickers := map[string]string{
"GOOG": "Google Inc",
"MSFT": "Microsoft",
"FB": "FaceBook",
}