3. 맵 사용하기
페이지 정보
작성자 관리자 댓글 0건 조회 3,105회 작성일 19-03-11 21:25본문
3. 맵 사용하기
맵은 해시테이블, 딕셔너리라고도 하며 키-값 형태로 자료를 저장한다.
슬라이스와 마찬가지로 레퍼런스 타입이다.
var 맵명 map[키자료형]값자료형
맵은 make함수를 사용하여 공간을 할당해야 값을 넣을 수 있다.
맵선언과 동시에 make 함수를 사용하면 map키워드와 자료형을 생략할 수 있다.
일반변수와 마찬가지로 :=를 사용하여 var를 생략할 수 있다.
package main
import "fmt"
func main() {
var a map[string]int = make(map[string]int) // make 함수로 키는 string 값은 int인 맵에 공간 할당
var b = make(map[string]int) // 맵을 선언할 때 map 키워드와 자료형 생략
c := make(map[string]int) // 맵을 선언할 때 var, map 키워드와 자료형 생략
fmt.Println(a)
fmt.Println(b)
fmt.Println(c)
}
package main
import "fmt"
func main() {
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"]) // 10
}
1. 맵에 데이터 저장하고 조회하기
package main
import "fmt"
func main() {
solarSystem := make(map[string]float32) // 키는 string, 값은 float32인 맵 생성 및 공간 할당
solarSystem["Mercury"] = 87.969 // 맵[키] = 값
solarSystem["Venus"] = 224.70069
solarSystem["Earth"] = 365.25641
solarSystem["Mars"] = 686.9600
solarSystem["Jupiter"] = 4333.2867
solarSystem["Saturn"] = 10756.1995
solarSystem["Uranus"] = 30707.4896
solarSystem["Neptune"] = 60223.3528
fmt.Println(solarSystem["Earth"]) // 365.25641
}
package main
import "fmt"
func main() {
solarSystem := make(map[string]float32) // 키는 string, 값은 float32인 맵 생성 및 공간 할당
solarSystem["Mercury"] = 87.969 // 맵[키] = 값
solarSystem["Venus"] = 224.70069
solarSystem["Earth"] = 365.25641
solarSystem["Mars"] = 686.9600
solarSystem["Jupiter"] = 4333.2867
solarSystem["Saturn"] = 10756.1995
solarSystem["Uranus"] = 30707.4896
solarSystem["Neptune"] = 60223.3528
value, ok := solarSystem["Pluto"] // 맵에 키가 있는지 검사할 때는 리턴값을 두 개 활용
fmt.Println(value, ok) // 0 false: 맵에 키가 없으면 두 번째 리턴값으로 false가 리턴됨
if value, ok := solarSystem["Saturn"]; ok {
fmt.Println(value) // 10756.1995
}
}
2. 맵순회하기
맵의 모든 데이터를 출력해 보겠다.
배열, 슬라이스와 마찬가지로 맵도 for 문에서 range 키워드를 사용한다.
for 키, 값 := range 맵 {}
package main
import "fmt"
func main() {
solarSystem := make(map[string]float32) // 키는 string, 값은 float32인 맵 생성 및 공간 할당
solarSystem["Mercury"] = 87.969 // 맵[키] = 값
solarSystem["Venus"] = 224.70069
solarSystem["Earth"] = 365.25641
solarSystem["Mars"] = 686.9600
solarSystem["Jupiter"] = 4333.2867
solarSystem["Saturn"] = 10756.1995
solarSystem["Uranus"] = 30707.4896
solarSystem["Neptune"] = 60223.3528
for key, value := range solarSystem { // 반복문이 실행될 때마다 키와 값이 자동으로 변수에 들어감
fmt.Println(key, value)
}
}
3. 맵에서 데이터 삭제하기
맵에서 값을 삭제하려면 delete 함수를 사용한다.
delete(맵, 삭제할_키)
package main
import "fmt"
func main() {
a := map[string]int{"Hello": 10, "world": 20}
delete(a, "world") // 맵 a에서 world 키 삭제
fmt.Println(a) // map[Hello:10]
}
4. 맵 안에 맵 만들기
맵의 값 안에는 일반 자료형뿐만 아니라 맵 자체도 들어갈 수 있다.
package main
import "fmt"
func main() {
terrestrialPlanet := map[string]map[string]float32{
"Mercury": map[string]float32{
"meanRadius": 2439.7,
"mass": 3.3022E+23,
"orbitalPeriod": 87.969,
},
"Venus": map[string]float32{
"meanRadius": 6051.8,
"mass": 4.8676E+24,
"orbitalPeriod": 224.70069,
},
"Earth": map[string]float32{
"meanRadius": 6371.0,
"mass": 5.97219E+24,
"orbitalPeriod": 365.25641,
},
"Mars": map[string]float32{
"meanRadius": 3389.5,
"mass": 6.4185E+23,
"orbitalPeriod": 686.9600,
},
}
fmt.Println(terrestrialPlanet["Mars"]["mass"]) // 6.4185E+2
}
댓글목록
등록된 댓글이 없습니다.