키, 값
형태의 자료구조
- zero value 는 nil 이다. 키도없고 키추가도 할수 없다.
make
함수를 이용하여 선언가능
make(map[키타입]벨류타입)
package main
import "fmt"
type Vertex struct {
Lat, Long float64
}
var m map[string]Vertex
func main() {
m = make(map[string]Vertex)
m["Bell Labs"] = Vertex{
40.68433, -74.39967,
}
fmt.Println(m["Bell Labs"])
}
map literal
package main
import "fmt"
type Vertex struct {
Lat, Long float64
}
var m = map[string]Vertex{
"Bell Labs": Vertex{
40.68433, -74.39967,
},
"Google": Vertex{
37.42202, -122.08408,
},
}
func main() {
fmt.Println(m)
}
- 최상위 타입이 타입 이름인 경우, 리터럴의 요소에서 생량할 수 있다.
package main
import "fmt"
type Vertex struct {
Lat, Long float64
}
var m = map[string]Vertex{
"Bell Labs": {40.68433, -74.39967}, // Vertex 생략됨
"Google": {37.42202, -122.08408},
}
func main() {
fmt.Println(m)
}
Map 다루기
- 요소 추가하기
- 요소 검색
- 요소 삭제
- 두개의 값을 할당하여 키 존재 여부를 테스트 할 수 있다.
elem, ok = m[key]
- 키가 있으면
ok = true
, 없으면 ok = false
- 키가 없다면
elem
은 map의 요소 타입의 zero value 이다.
package main
import "fmt"
func main() {
m := make(map[string]int)
m["Answer"] = 42
fmt.Println("The value:", m["Answer"])
m["Answer"] = 48
fmt.Println("The value:", m["Answer"])
delete(m, "Answer")
fmt.Println("The value:", m["Answer"])
v, ok := m["Answer"]
fmt.Println("The value:", v, "Present?", ok)
}