Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- package
- GO 언어
- range
- install
- FOR
- json
- mutex
- window
- Callback
- C
- 영화
- Python
- 책
- JavaScript
- http
- Sync
- c++
- go언어
- Linux
- API
- channel
- bitcoin
- go
- windows
- Close
- 리뷰
- write
- Golang
- File
- tcp
Archives
- Today
- Total
Code Habit
Go ) 맵 사용하기 본문
맵은 키-값 형태로 자료를 저장한다. 또한 슬라이스와 마찬가지로 레퍼런스 타입이다. 다음과 같이 맵을 선언할 수 있다.
- var 맵명 map[키_자료형]값_자료형
var a map[string]int // 키는 string, 값은 int인 맵 선언
map은 make 함수를 사용하여 공간을 할당해야 값을 넣을 수 있다.
// make 함수로 키는 string 값은 int인 맵에 공간할당
var a map[string]int = make(map[string]int)
var b = make(map[string]int)
c := make(map[string]int)
다음과 같이 map 생성과 동시에 값을 초기화할 수 있다.
a := map[string]int{"Hello":10, "world":20}
b := map[string]int {
"Hello":10,
"world":20,
}
fmt.Println(a["Hello"]) // 10
fmt.Println(b["world"]) // 20
맵에 데이터를 넣으려면 [](대괄호) 안에 키를 지정하고 값을 대입한다. 마찬가지로 값을 조회할 때도 대괄호 안에 키를 지정하면 된다.
solarSystem := make(map[string]float32)
solarSystem["Mercury"] = 87.969
solarSystem["Venus"] = 224.70069
solarSystem["Earth"] = 365.25641
fmt.Println(solarSystem["Earth"]) // 365.25641
fmt.Println(solarSystem["pluto"]) // 0
맵에서 존재하지 않는 키를 조회했을 때는 빈 값이 출력된다. ( 정수형 : 0, 문자열 : "" )
맵에 데이터가 있는지 검사할 때는 다음과 같이 값을 조회한 뒤 리턴값을 활용한다. 리턴값에서 두 번째 변수에 키의 존재 여부가 저장되며 키가 있으면 true, 없으면 false이다.
value, ok := solarSystem["Pluto"]
fmt.Println(value, ok) // 0 false
if value, ok := solarSystem["Earth"]; ok {
fmt.Println(value) // 365.25641
}
배열, 슬라이스와 마찬가지로 맵도 for 반복문에서 range 키워드를 사용한다.
- for 키, 값 := range 맵 { }
for key, value := range solarSystem {
fmt.Println(key, value)
}
range의 리턴값에서 키 변수를 사용하고 싶지 않다면 _(밑줄 문자)를 사용한다.
for _, value := range solarSystem {
fmt.Println(value)
}
맵에서 값을 삭제하려면 delete 함수를 사용한다.
- delete(맵, 삭제할 키)
a := map[string]int{"Hello":10, "world":20}
delete(a, "world") // 맵 a에서 world키 삭제
fmt.Println(a) // map[Hello:10]
맵의 값 안에는 일반 자료형뿐만 아니라 맵 자체도 들어갈 수 있다.
- map[키자료형]map[키자료형]값자료형
terrestrialPlanet := map[string]map[string]float32{
"Mercury": map[string]float32{
"meanRadius": 24397,
"mass": 3.3022E+23,
"orbitalPeriod": 87.969,
},
}
fmt.Println(terrestrialPlanet["Mercury"]["mass"]) // 3.3022E+23
map 키워드의 값 자료형 부분에 게속 map 키워드를 붙여나가면 맵 안에 맵을 만들 수 있다. 맵 안의 하위 항목을 가져오려면 terrestrialPlanet["Mercury"]["mass"]와 같이 키를 연속해서 지정하면 된다.