Go 언어

본문 바로가기
사이트 내 전체검색


Go 언어
Go 언어

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

}






댓글목록

등록된 댓글이 없습니다.


개인정보취급방침 서비스이용약관 모바일 버전으로 보기 상단으로

TEL. 063-469-4551 FAX. 063-469-4560 전북 군산시 대학로 558
군산대학교 컴퓨터정보공학과

Copyright © www.leelab.co.kr. All rights reserved.