지도 데이터 유형은 키와 값의 형태로 된 해시 테이블이므로 빠른 검색, 추가, 삭제 및 기타 작업을 위해 키와 값을 하나씩 매핑할 수 있습니다. Go 언어도 예외는 아니며 지도 데이터 구조 유형을 제공합니다.
기본 제공 지도를 사용하지 마세요 '' ' ' ''''''''''''''''' 어웨이 스루 스루 스루 오버-에서-to -- 로 가볍게 이동하세요 이는 golang 공식 문서에도 설명되어 있으므로 선언한 후 바로 사용하지 마세요. 처음에는 다음과 같은 실수를 저지르는 경우가 많습니다:
var m map[string]string m["result"] = "result"
위 코드의 첫 번째 줄은 맵을 초기화하지 않지만, 쓰기 작업은 널 포인터에 대한 참조이므로 고통이 발생합니다.
그러므로 메모리를 할당하고 초기화하려면 make 함수를 사용해야 한다는 점을 기억해야 합니다.m := make(map[string]string)
m["result"] = "result"
저는 map을 자주 사용하는데 사용하면 기분이 좋습니다. 그런데 어느 날 갑자기 트래픽이 늘어나더니 프로그램이 무의식적으로 끊겼어요. 무슨 일이 일어났는지는 아직 모르겠지만 이전에는 분명히 잘 작동하고 있었습니다.
따라서 어설션 확인, 동시성 안전 고려 사항 등과 같은 몇 가지 좋은 습관을 처음부터 개발해야 합니다.
지도는 사용하기 쉽지만 여전히 조심해야 합니다. 아마도 많은 사람들은 Golang의 내장 맵이 실제로 동시성이 안전하지 않다는 사실을 아직도 모르고 있을 것입니다.
어쩌면 golang의 sync.Mapsync.Map을 사용해 볼 수도 있습니다. 실제로는 동기화 패키지에 있는 Map이라는 golang 사용자 정의 구조입니다. 구조 프로토타입은 다음과 같습니다:
type Map struct { mu Mutex read atomic.Value // readOnly dirty map[interface{}]*entry misses int }
위 내용은 golang 맵이 동시적이지 않은 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!