지도 초기화: 바로가기와 명시적 생성의 차이점 풀기
질문이 생깁니다. 이동:
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!