>  기사  >  백엔드 개발  >  golang의 지도란 무엇입니까?

golang의 지도란 무엇입니까?

青灯夜游
青灯夜游원래의
2023-01-13 11:07:133927검색

golang에서 맵은 키(index)와 값(value)의 형태로 정렬되지 않은 컬렉션입니다. 연관 배열 또는 사전이라고도 합니다. 이상적인 구조는 주어진 키를 기반으로 해당 값을 빠르게 찾을 수 있는 데이터 구조입니다.

golang의 지도란 무엇입니까?

이 튜토리얼의 운영 환경: 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"])
}

출력 결과:

golang의 지도란 무엇입니까?

예제에서 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.