728x90
1. Map 개요
- Map은 키(Key)에 대응하는 값(Value)을 신속히 찾는 해시테이블(Hash table)을 구현한 자료구조이다
var newMap map[int]string
newMap = make(map[int]string)
//리터럴을 사용한 초기화
exMap := map[string]string{
"a": "apple",
"b": "banana",
"c": "coconut",
}
- Map을 사용하려면 make함수로 초기화를 꼭 해주어야 한다.
- 바로 초기화도 가능하지만 나는 개발할 때 항상 make함수로 초기화를 한 후에 사용했다.
2. Map 사용
- 데이터를 추가하기 위해서는 "map변수[키] = 값" 처럼 해당 키에 그 값을 할당
- 키가 중복일 경우 마지막에 할당한 값이 기존에 있던 값을 덮어쓴다.
package main
func main() {
var m map[int]string
m = make(map[int]string)
//추가 혹은 갱신
m[901] = "Apple"
m[134] = "Grape"
m[777] = "Tomato"
// 키에 대한 값 읽기
str := m[134]
println(str)
noData := m[999] // 값이 없으면 nil 혹은 zero 리턴
println(noData)
// 삭제
delete(m, 777)
}
- map에서 특정 키와 그 값을 삭제하기 위해서는 delete()함수를 사용한다.
3. Map 키 체크
- map안에 특정 키가 존재하는지를 체크하는 방법
package main
func main() {
tickers := map[string]string{
"a": "apple",
"b": "banana",
"c": "coconut",
}
// map 키 체크
val, exists := tickers["c"]
if !exists {
println("no!")
}
}
- 첫번째는 키에 상응하는 값이고, 두번째는 그 키가 존재하는지 아닌지를 나타내는 bool 값이다.
4. Map 순회
- Go에서 Map 순회는 for range 로 가능하다.
package main
import "fmt"
func main() {
myMap := map[string]string{
"a": "apple",
"b": "banana",
"c": "coconut",
}
// for range 문을 사용하여 모든 맵 요소 출력
// Map은 unordered 이므로 순서는 무작위
for key, val := range myMap {
fmt.Println(key, val)
}
}
참고 사이트
http://golang.site/go/article/14-Go-%EC%BB%AC%EB%A0%89%EC%85%98---Map
728x90
'개발 > Go' 카테고리의 다른 글
[Go] 기초 - 구조체(Struct) (0) | 2022.07.27 |
---|---|
[Go] 기초 - 패키지 (0) | 2022.07.25 |
[Go] 기초 - 컬렉션 (Slice) (0) | 2022.07.21 |
[Go] 기초 - 컬렉션 (배열) (0) | 2022.07.20 |
[Go] 기초 - 클로저 (Closure) (0) | 2022.07.19 |