Golang의 지도 데이터 구조를 심층적으로 분석하기 위한 간결한 가이드

WBOY
풀어 주다: 2024-01-16 10:12:10
원래의
1305명이 탐색했습니다.

Golang의 지도 데이터 구조를 심층적으로 분석하기 위한 간결한 가이드

Golang의 Map은 키를 값과 연결할 수 있는 매우 일반적으로 사용되는 데이터 구조입니다. 지도는 기사에 단어가 나타나는 횟수 계산, 학생의 시험 점수 저장 등 다양한 상황에서 매우 유용합니다.

이 글에서는 Map이 무엇인지, Map의 특징, Map의 사용법, Map 순회 등을 간단하고 이해하기 쉽게 Golang의 Map을 소개하고, 점차적으로 몇 가지 코드 예제도 작성할 예정입니다. 배운 지식을 통합합니다.

1. 지도란 무엇인가요?

맵은 키를 값으로 매핑하는 데이터 구조입니다. 각 키는 한 번만 나타날 수 있으며 해당 값은 반복적으로 나타날 수 있습니다. Golang에서 Map의 구현은 삽입, 삭제 및 검색 작업을 빠르게 수행할 수 있는 해시 테이블과 유사합니다.

Map의 선언 형식은 다음과 같습니다.

map[KeyType]ValueType
로그인 후 복사

여기서 KeyType과 ValueType은 각각 키와 값의 유형을 나타냅니다. 예는 다음과 같습니다.

var students map[string]int
로그인 후 복사

이 예는 맵을 정의하고 키 유형은 문자열이고 값 유형은 int입니다. 초기화 전에는 이 맵이 nil이므로 사용할 수 없습니다.

2. 맵 특성

  1. 맵 키는 int, float, string, bool 등과 같은 "==" 및 "!=" 연산자를 지원하는 유형이어야 합니다. 다음 세 가지 경우를 제외하고 Golang의 유형은 맵 키로 사용할 수 있습니다:

a. 다음 두 필드가 있는 구조:

type Key struct {
  x, y int
}
로그인 후 복사

b. 요소 유형은 "=="를 지원합니다. "!=" 연산자:

type Key [2]int
로그인 후 복사

c. 인터페이스 유형이며 동적 값이 nil이 아닙니다.

type Key interface {
}
로그인 후 복사
  1. Map은 참조 유형이고 해당 0 값은 nil입니다. nil 값에 대해 작업을 시도하면 런타임 패닉이 발생합니다.
  2. make 함수를 사용하여 지도 초기화:
students := make(map[string]int)
로그인 후 복사
  1. 지도에 요소 추가 또는 수정:
students["Tom"] = 90
students["Jerry"] = 80
students["Mary"] = 95
로그인 후 복사

지도의 요소를 수정하려면 동일한 키를 사용하면 됩니다. 새로운 키-값 쌍을 추가하려면 키 위치에 값을 쓰면 됩니다.

  1. Map에서 요소 삭제:
delete(students, "Jerry")
로그인 후 복사

삭제 함수의 첫 번째 매개변수는 Map이고 두 번째 매개변수는 삭제할 키입니다.

  1. 맵에 특정 키가 있는지 확인:
score, ok := students["Tom"]
if ok {
  fmt.Printf("Tom's score is %d.
", score)
} else {
  fmt.Println("Tom not found.")
}
로그인 후 복사

3. 맵 사용 방법

특정 문자열이 있고 각 단어가 그 안에 나타나는 횟수를 세고 싶다고 가정해 보겠습니다. .

package main

import (
    "fmt"
    "strings"
)

func main() {
    str := "Go is a programming language.Golang is a updated version of the Go language. It was created by Google."

    // 将字符串按照空格分隔成切片
    words := strings.Fields(str)

    // 创建一个空Map,用于统计单词出现次数
    count := make(map[string]int)

    // 统计单词出现次数
    for _, word := range words {
        count[word]++
    }

    // 打印结果
    for word, cnt := range count {
        fmt.Printf("%s: %d
", word, cnt)
    }
}
로그인 후 복사

이 예에서는 먼저 strings 패키지의 Fields 함수를 사용하여 문자열을 문자열 조각으로 분리한 다음 빈 맵을 만듭니다. 그런 다음 for 루프를 사용하여 조각의 각 단어를 키로 사용하고 해당 값에 1을 더한 다음 마지막으로 맵을 순회하여 각 단어가 나타나는 횟수를 인쇄합니다.

4. 지도 탐색

Golang에서는 for 루프를 사용하여 지도를 탐색할 수 있습니다. 맵을 탐색할 때 반환되는 키-값 쌍은 순서가 없습니다.

  1. 맵의 키 탐색:
for key := range students {
    fmt.Println(key)
}
로그인 후 복사
  1. 맵의 값 탐색:
for _, value := range students {
    fmt.Println(value)
}
로그인 후 복사
  1. 맵의 키-값 쌍 탐색:
for key, value := range students {
    fmt.Printf("key: %s, value: %d
", key, value)
}
로그인 후 복사

위의 탐색 방법을 사용할 수 있습니다. 문자열이 어떤 맵이든 순회하려면 키 맵과 다른 유형의 맵 모두에 적용 가능합니다.

Summary

이 글에서는 Map의 정의, 특징, 사용법, 순회 등 Golang의 Map을 주로 소개합니다. 실제 개발에서 Map은 매우 일반적으로 사용되는 데이터 구조이므로 Golang 개발자가 Map 사용을 익히는 것이 매우 필요합니다.

위 내용은 Golang의 지도 데이터 구조를 심층적으로 분석하기 위한 간결한 가이드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿