🐾   [golang] 맵(map) 공부하기

배경

타입이 *[]map[string]int64 인데 내가 적절하게 사용하지 못하고 있다는 것을 알게 되었다.

Map(맵)

  • 키와 값으로 되어있는 테이블 형태의 컬렉션이다.
  • 내장 타입(int, int64, string, float)과 배열, 구조체, 포인터, 사용자 정의 타입을 키로 사용할 수 있다

초기화 방법

map[키타입]값타입{}
map[키타입]값타입{초기값}
make(map[키타입]값타입)
make(map[키타입]값타입, 초기용량)
  • 나는 보통 make(map[키타입]값타입) 많이 사용한다.

예시

ex1 := map[string]int64{}
fmt.Println("map[string]int64{} : ",ex1)

ex2 := map[string]int64{"id":2,"count":1}
fmt.Println("map[키타입]값타입{초기값} : ",ex2)

ex3:=make(map[string]int64, 0)
fmt.Println("make(map[string]int64, 0) : ",ex3)

ex4:=make(map[string]int64)
fmt.Println("make(map[string]int64) : ",ex4)

결과

map[string]int64{} :  map[]
map[키타입]값타입{초기값} :  map[count:1 id:2]
make(map[string]int64, 0) :  map[]
make(map[string]int64) :  map[]

요소 추가하는 방법

  1. 변수명[“키명”] = 값
addValue := map[string]int64{}
addValue["id"]=5
addValue["count"]=4
fmt.Println("첫번째 추가 방법 : ",addValue) //첫번째 추가 방법 :  map[count:4 id:5]
  1. 한줄로 작성하기
addValue2 := map[string]int64{"id":4,"count":1}
fmt.Println("두번째 추가 방법 : ",addValue2) //두번째 추가 방법 :  map[count:1 id:4]
  1. 여러줄로 작성하기
addValue3 := map[string]int64{
"id":4,
"count":1, //여러줄로 쓸때에는 마지막에 ,(콤마)를 붙여준다.
}
fmt.Println("세번째 추가 방법 : ",addValue3) //세번째 추가 방법 :  map[count:1 id:4]
  • 여러줄로 쓸때에는 마지막에 ,(콤마)를 붙여준다.

for range 이용해서 값 추출하기

for index, value := range addValue3{
fmt.Println("인덱스 값 : ",index,"값 : ",value)
}

결과

인덱스 값 :  id 값 :  4
인덱스 값 :  count 값 :  1

원하는 값 추출하기

변수명["키명"]

예시

fmt.Println("addValue3[id] 값 :",addValue3["id"]) //addValue3[id] 값 : 4

값 수정하기

  • 변수명[“키명”]= 값 키명이 있으면 수정이 되고 없으면 추가가 된다.
fmt.Println("수정 전 : ",addValue3)  //수정 전 :  map[count:1 id:4]
addValue3["id"]=9
fmt.Println("id가 있어서 수정 후 : ",addValue3) //id가 있어서 수정 후 :  map[count:1 id:9]

addValue3["num"]=7
fmt.Println("num이 없어서 추가 후 : ",addValue3) //num이 없어서 추가 후 :  map[count:1 id:9 num:7]

값 삭제하기

delete(변수명,키명)

예시

delete(addValue3,"id")
fmt.Println("삭제 후 : ",addValue3) //삭제 후 :  map[count:1 num:7]

이슈

https://github.com/YooGenie/go-study/issues/31

​ ​ ​