바둑언어 지도(컬렉션)


맵은 키-값 쌍의 순서가 지정되지 않은 모음입니다. Map의 가장 중요한 점은 키를 통해 데이터를 빠르게 검색하는 것입니다. 키는 인덱스와 유사하며 데이터의 값을 가리킵니다.

Map은 컬렉션이므로 배열 및 슬라이스처럼 반복할 수 있습니다. 그러나 Map은 순서가 없으며 반환되는 순서를 결정할 수 없습니다. 이는 Map이 해시 테이블을 사용하여 구현되기 때문입니다.

지도 정의

내장 함수 make를 사용하거나 map 키워드를 사용하여 Map을 정의할 수 있습니다.

/* 声明变量,默认 map 是 nil */
var map_variable map[key_data_type]value_data_type

/* 使用 make 函数 */
map_variable = make(map[key_data_type]value_data_type)

지도가 초기화되지 않은 경우 nil 지도가 생성됩니다. nil 맵은 키-값 쌍을 저장하는 데 사용할 수 없습니다

인스턴스

다음 예에서는 맵의 생성 및 사용을 보여줍니다.

package main

import "fmt"

func main() {
   var countryCapitalMap map[string]string
   /* 创建集合 */
   countryCapitalMap = make(map[string]string)
   
   /* map 插入 key-value 对,各个国家对应的首都 */
   countryCapitalMap["France"] = "Paris"
   countryCapitalMap["Italy"] = "Rome"
   countryCapitalMap["Japan"] = "Tokyo"
   countryCapitalMap["India"] = "New Delhi"
   
   /* 使用 key 输出 map 值 */
   for country := range countryCapitalMap {
      fmt.Println("Capital of",country,"is",countryCapitalMap[country])
   }
   
   /* 查看元素在集合中是否存在 */
   captial, ok := countryCapitalMap["United States"]
   /* 如果 ok 是 true, 则存在,否则不存在 */
   if(ok){
      fmt.Println("Capital of United States is", captial)  
   }else {
      fmt.Println("Capital of United States is not present") 
   }
}

위 예의 결과는 다음과 같습니다.

Capital of France is Paris
Capital of Italy is Rome
Capital of Japan is Tokyo
Capital of India is New Delhi
Capital of United States is not present

delete() 함수

delete() 함수는 집합의 요소를 삭제하는 데 사용되며 매개 변수는 맵과 해당 키입니다. 예는 다음과 같습니다.

package main

import "fmt"

func main() {   
   /* 创建 map */
   countryCapitalMap := map[string] string {"France":"Paris","Italy":"Rome","Japan":"Tokyo","India":"New Delhi"}
   
   fmt.Println("原始 map")   
   
   /* 打印 map */
   for country := range countryCapitalMap {
      fmt.Println("Capital of",country,"is",countryCapitalMap[country])
   }
   
   /* 删除元素 */
   delete(countryCapitalMap,"France");
   fmt.Println("Entry for France is deleted")  
   
   fmt.Println("删除元素后 map")   
   
   /* 打印 map */
   for country := range countryCapitalMap {
      fmt.Println("Capital of",country,"is",countryCapitalMap[country])
   }
}

위 예를 실행한 결과는

原始 map
Capital of France is Paris
Capital of Italy is Rome
Capital of Japan is Tokyo
Capital of India is New Delhi
Entry for France is deleted
删除元素后 map
Capital of Italy is Rome
Capital of Japan is Tokyo
Capital of India is New Delhi
입니다.