Go 언어 Map 대하여 배워보기

오늘은 Go 언어의 Map에 대하여 작성하면서 배워보려 합니다.

package main

import (
	"fmt"
)

func main() {
	var a = make(map[string]int)
	a["key1"] = 1
	a["key2"] = 2
	fmt.Println(len(a),a)
}

이전에 슬라이스를 make로 만든 것처럼 map도 make로 만들어줘야 합니다.

처음부터 var a map[string]int로 작성했다가는 nil이 없으므로 panic이 나타납니다.

위와 같이 작성하면 총 두 쌍의 키와 값이 생깁니다.

map도 길이를 len으로 측정할 수 있습니다.

package main

import (
	"fmt"
)

func main() {
	var b = map[string]int{
		"key1" : 1,
		"key2" : 2,
	}
	fmt.Println(b)
}

map을 만들면서 초기화하면 make를 안 쓰고도 만들 수도 있습니다.

package main

import (
	"fmt"
)

func main() {
	var db = map[string]int{
		"key1" : 1,
		"key2" : 2,
	}
	fmt.Println(db["key1"])
	fmt.Println(db["key3"])
	v1 , status := db["key1"]
	fmt.Println(v1, status)
	v2 , status := db["key3"]
	fmt.Println(v2, status)
}

키를 검색하면 값이 출력되는데, 없는 키를 입력하면 0이 출력됩니다.

또한 받는 변수가 두개면 순서대로 값, 존재 유무가 출력됩니다.

package main

import (
	"fmt"
)

func main() {
	forMap := map[string]int{
		"key1" : 1,
		"key2" : 2,
	}
	for i,j := range forMap{
		fmt.Println(i,j)
	}
}

for문을 이용하여 키와 값을 순서대로 출력할 수 있습니다.

package main

import (
	"fmt"
)

func main() {
	var findMap = map[string]int{
		"key1" : 1,
		"key2" : 2,
	}
	fmt.Println(findMap["key1"])
	delete(findMap,"key1")
	fmt.Println(findMap["key1"])
}

값을 삭제하고 싶을 때에는 delete로 삭제하고 싶은 map과 해당 키를 넣어주면 삭제할 수 있습니다.

Written on September 15, 2018