golang에서 맵은 키(index)와 값(value)의 형태로 정렬되지 않은 컬렉션입니다. 연관 배열 또는 사전이라고도 합니다. 이상적인 구조는 주어진 키를 기반으로 해당 값을 빠르게 찾을 수 있는 데이터 구조입니다.
이 튜토리얼의 운영 환경: Windows 7 시스템, GO 버전 1.18, Dell G3 컴퓨터.
Go 언어에서 맵은 요소 쌍(pair)의 정렬되지 않은 모음인 특수 데이터 구조입니다. 쌍은 키(인덱스)와 값(값)에 해당하므로 이 구조를 연관 배열 또는 사전이라고도 합니다. , 이는 키가 주어지면 해당 값을 빠르게 찾을 수 있는 이상적인 구조입니다.
Golang 맵의 키는 int, string, bool 등 ==를 사용하여 비교할 수 있는 모든 데이터 유형이 될 수 있으며 값도 모든 유형이 될 수 있습니다.
map은 순서가 없는 데이터 구조이므로 탐색할 때마다 동일한 지도가 일관되지 않은 순서로 얻어질 수 있습니다.
map 개념
map은 참조 유형이며 다음과 같은 방식으로 선언할 수 있습니다.
var mapname map[keytype]valuetype
여기서:
mapname은 map의 변수 이름입니다.
keytype은 키 유형입니다.
valuetype은 키에 해당하는 값 유형입니다.
팁: [keytype]과 valuetype 사이에는 공백이 허용됩니다.
지도가 동적으로 커질 수 있으므로 지도의 길이를 알 필요가 없습니다. 초기화되지 않은 지도의 값은 len() 함수를 사용하여 쌍 수를 얻을 수 있습니다. 지도.
【예제】
package main import "fmt" func main() { var mapLit map[string]int //var mapCreated map[string]float32 var mapAssigned map[string]int mapLit = map[string]int{"one": 1, "two": 2} mapCreated := make(map[string]float32) mapAssigned = mapLit mapCreated["key1"] = 4.5 mapCreated["key2"] = 3.14159 mapAssigned["two"] = 3 fmt.Printf("Map literal at \"one\" is: %d\n", mapLit["one"]) fmt.Printf("Map created at \"key2\" is: %f\n", mapCreated["key2"]) fmt.Printf("Map assigned at \"two\" is: %d\n", mapLit["two"]) fmt.Printf("Map literal at \"ten\" is: %d\n", mapLit["ten"]) }
출력 결과:
예제에서 mapLit은 배열 및 구조와 마찬가지로 {key1: value1, key2: value2} 형식을 사용하여 맵을 초기화하는 방법을 보여줍니다.
위 코드에서 mapCreated가 어떻게 생성되는지mapCreated := make(map[string]float)
等价于mapCreated := map[string]float{}
.
mapAssigned는 mapList에 대한 참조이며, mapAssigned를 수정하면 mapLit 값에도 영향을 미칩니다.
참고: make()를 사용할 수 있지만 new()를 사용하여 맵을 생성할 수는 없습니다. new()를 잘못 사용하여 참조 개체를 할당하면 null 참조 포인터가 생성됩니다. 초기화되지 않은 변수를 가져옵니다.
mapCreated := new(map[string]float)
다음으로 mapCreated["key1"] = 4.5를 호출하면 컴파일러는 오류를 보고합니다.
invalid operation: mapCreated["key1"] (index of type *map[string]float).
map 용량
은 배열과 다릅니다. 추가된 키-값은 동적으로 확장되므로 고정된 길이나 최대 제한이 없지만 맵의 초기 용량을 표시하도록 선택할 수도 있습니다. 형식은 다음과 같습니다.
make(map[keytype]valuetype, cap)
예:
map2 := make(map[string]float, 100)
지도가 용량 상한까지 커지면 새로운 키값이 추가되면 자동으로 지도의 크기가 1씩 늘어납니다. 따라서 성능상의 이유로 큰 지도나 빠르게 확장되는 지도의 경우, 용량이 대략적으로만 알려져 있더라도 먼저 표시하는 것이 가장 좋습니다.
음계를 해당 오디오에 매핑하는 맵의 구체적인 예는 다음과 같습니다.
noteFrequency := map[string]float32 { "C0": 16.35, "D0": 18.35, "E0": 20.60, "F0": 21.83, "G0": 24.50, "A0": 27.50, "B0": 30.87, "A4": 440}
[관련 권장 사항: Go 비디오 튜토리얼, 프로그래밍 교육]
위 내용은 golang의 지도란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!