개발/Go

[Go] 기초 - 컬렉션 (Map)

devhooney 2022. 7. 22. 19:15
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 

 

예제로 배우는 Go 프로그래밍 - Go 컬렉션 - Map

1. Map 개요 Map은 키(Key)에 대응하는 값(Value)을 신속히 찾는 해시테이블(Hash table)을 구현한 자료구조이다. Go 언어는 Map 타입을 내장하고 있는데, "map[Key타입]Value타입" 과 같이 선언할 수 있다. 예를

golang.site

 

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