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"])







Posted by '김용환'
,