배열이나 슬라이스는 인덱스 번호로 접근하게 된다. 이 때 인덱스 번호는 무조건 숫자여야 한다.
그러면 다른 의문이 생길 수 있다. 인덱스 번호가 다른 거면 안될까?
그런 의문에서 다른 언어에서 수많은 인덱스 번호가 숫자가 아닌 자료형이 등장했다.
자바의 HashMap, C++ 의 unordered_map, python의 dictionary, js의 object, php의 associate array등..
Go에서도 이런게 있다. 바로 맵이다.
이번에는 맵을 사용하는 예시를 보도록 하자.
package main
import "fmt"
func main() {
mymap1 := map[string]string{}
mymap2 := make(map[string]string)
mymap1["aoa"] = "choa"
mymap1["girlsday"] = "mina"
mymap1["twice"] = "dahyun"
mymap2["aoa"] = "jimin"
mymap2["girlsday"] = "ura"
mymap2["twice"] = "momo"
for index, value := range mymap1 {
fmt.Print(index, " ", value, "\n")
}
fmt.Println()
for index, value := range mymap2 {
fmt.Print(index, " ", value, "\n")
}
}
위의 소스는 맵을 사용하는 예시이다. 쪼개서 보도록 하자.
mymap1 := map[string]string{}
mymap2 := make(map[string]string)
만드는 방법은 두가지이다.
<변수명> := map[<key타입>]<value타입>{}
<변수명> := make(map[<key타입>]<value타입>)
key타입이 문자열만 되는건 아니지만 주로 문자열을 사용하게된다.
mymap1["aoa"] = "choa"
mymap1["girlsday"] = "mina"
mymap1["twice"] = "dahyun"
맵 자료구조에서 값을 추가하는 방법은 그냥 넣으면 된다...
값을 수정하는 방법? 그냥 넣으면 된다...
그리고 map자료구조는 순회를 할 방법이 range 밖에 없다.
그래서 무조건 아래처럼 순회해야한다.
for index, value := range mymap1 {
fmt.Print(index, " ", value, "\n")
}
이제는 index와 value가 나올 것이다.
여기서 index는 문자열로 나오게 될 것이다.
제대로 출력되는걸 확인할 수 있다.
package main
import "fmt"
func main() {
mymap1 := map[string]string{
"aoa": "choa",
"girlsday": "mina",
"twice": "dahyun",
}
mymap1["redvelvet"] = "irene"
for index, value := range mymap1 {
fmt.Print(index, " ", value, "\n")
}
fmt.Println()
}
만약 처음에 초기화를 시키고 싶다면 위처럼 하면된다.
mymap1 := map[string]string{
"aoa": "choa",
"girlsday": "mina",
"twice": "dahyun",
}
이렇게 사용하면된다.
좀더 직관적이고 json처럼 사용하 수 있다.
난 map의 값을 지우고 싶어. => delete
package main
import "fmt"
func main() {
mymap := map[string]string{
"aoa": "choa",
"girlsday": "mina",
"twice": "dahyun",
"redvelvet": "irene",
}
delete(mymap, "twice")
for index, value := range mymap {
fmt.Print(index, " ", value, "\n")
}
fmt.Println()
}
map에서 특정 값을 지우고 싶다면 delete을 사용해야한다.
이는 메소드로서 map뿐만아니라 array도 사용할 수 있다.
위의 예시를 보면 twice를 삭제했다.(가슴아프다)
그러면 어떻게 될까?
결과를 보도록 하자.
보다시피 값이 지워지는걸 확인할 수 있다.
'Programming > Go' 카테고리의 다른 글
[Go-11]struct와 객체 (0) | 2018.09.02 |
---|---|
[Go-10]함수(function) (0) | 2018.09.01 |
[Go-08]배열(Array)과 슬라이스(slice) (0) | 2018.08.31 |
[Go-07]반복문 (0) | 2018.08.31 |
[Go-06]switch(스위치) (0) | 2018.08.31 |