> 백엔드 개발 > Golang > Go Maps: `var m = map[string]int{}` 대 `var m = make(map[string]int)`: 차이점은 무엇입니까?

Go Maps: `var m = map[string]int{}` 대 `var m = make(map[string]int)`: 차이점은 무엇입니까?

Susan Sarandon
풀어 주다: 2024-12-17 20:13:10
원래의
839명이 탐색했습니다.

Go Maps: `var m = map[string]int{}` vs. `var m = make(map[string]int)`: What's the Difference?

지도 초기화: 바로가기와 명시적 생성의 차이점 풀기

질문이 생깁니다. 이동:

var m = map[string]int{}
로그인 후 복사

var m = make(map[string]int)
로그인 후 복사

전자는 단지 필드를 신속하게 초기화하기 위한 간결한 방법입니까? 고려해야 할 잠재적인 성능 영향이 있습니까?

차이 분석

이 두 구문의 차이점은 비어 있지 않은 맵에 대한 의미에 있습니다. make가 일관되게 빈 맵을 생성하는 동안 첫 번째 예는 맵 리터럴의 고유한 기능, 즉 비어 있지 않은 맵을 직접 생성하는 기능을 활용합니다. 예를 들어:

m := map[bool]string{false: "FALSE", true: "TRUE"}
로그인 후 복사

예를 일반화하려면 다음과 같이 초기 값 쌍이 없는 비어 있지 않은 맵 리터럴을 사용하세요.

m := map[T]U{}
로그인 후 복사

make를 명시적으로 사용하는 것과 의미상 동일합니다.

m := make(map[T]U)
로그인 후 복사

그러나 make는 추가 이점을 제공합니다. 즉, 지도의 초기 용량을 초과하는 사양을 허용합니다. 처음에 할당된 요소의 수입니다. 다음 예를 고려해 보세요.

m := make(map[T]U, 50)
로그인 후 복사

이 구문은 지도 내에 최대 50개의 항목을 수용할 수 있는 충분한 공간을 할당합니다. 사전에 메모리를 예약하면 지도 성장이 예상될 때 향후 할당을 최소화할 수 있습니다.

위 내용은 Go Maps: `var m = map[string]int{}` 대 `var m = make(map[string]int)`: 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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