map을 생성할 때는 make를 사용한다.
그리고 map의 값에 여러 매개 변수가 있을 때 구분자를 , 를 사용하는데, 끝에도 사용해야 에러가 발생하지 않는다.
package main
import "fmt"
type Member struct {
name, dept string
a int
}
var m map[string]string
var members map[int]Member
func main() {
m = make(map[string]string)
m["key1"] = "value1"
m["key2"] = "value2"
fmt.Println(m["key1"])
fmt.Println(m["key2"])
members = make(map[int]Member)
members[1] = Member{
"samuel", "personal", 1,
}
members[2] = Member{
"jacks", "development", 2,
}
fmt.Println(members[1])
fmt.Println(members[2])
}
결과
value1
value2
{samuel personal 1}
{jacks development 2}
map 생성할 때 make를 사용하지 않고 일반 언어처럼 바로 생성할 수도 있다.
var member2 = map[int]Member {
1 : {"hardy", "development", 1},
2 : {"jenny", "personal", 2},
}
fmt.Println(member2)
결과
map[1:{hardy development 1} 2:{jenny personal 2}]
2개를 리턴받을 수 있는데, 앞 매개변수는 값, 뒷 매개변수는 결과를 나타난다.
a, result := m["key2"]
fmt.Println(a, result)
b, result := members[2]
fmt.Println(b, result)
결과는 다음과 같다.
value2 true
{jacks development 2} true
map의 키,값, 키만, 값만 얻는 예제이다.
fmt.Println("==1 (key value)")
for key, value := range members {
fmt.Println("Key:", key, "Value:", value)
}
fmt.Println("==2 (only key)")
for value := range members {
fmt.Println("value:", value)
}
fmt.Println("==3 (only value)")
for _, value := range members {
fmt.Println("value:", value)
}
결과는 다음과 같다.
==1 (key value)
Key: 1 Value: {samuel personal 1}
Key: 2 Value: {jacks development 2}
==2 (only key)
value: 1
value: 2
==3 (only value)
value: {samuel personal 1}
value: {jacks development 2}
변경과 삭제는 다음과 같다.
m["key1"] = "newValue1"
fmt.Println(m["key1"])
delete(m, "key1")
fmt.Println(m["key1"])