GO · 컬렉션
sync.Map
sync.Map은 동시성 안전한 맵입니다. 키가 안정적이고 고루틴별로 다른 키를 사용할 때 최적입니다.
컬렉션중급sync-mapconcurrentmapgoroutine-safe
핵심 설명
sync.Map은 동시성 안전한 맵입니다. 키가 안정적이고 고루틴별로 다른 키를 사용할 때 최적입니다.
Go code
package main
import (
"fmt"
"sync"
)
func main() {
var m sync.Map
// 저장
m.Store("lang", "Go")
m.Store("version", "1.22")
// 로드
v, ok := m.Load("lang")
fmt.Println(v, ok) // Go true
// 없으면 저장, 있으면 기존 값 반환
actual, loaded := m.LoadOrStore("lang", "Rust")
fmt.Println(actual, loaded) // Go true (이미 있음)
// 삭제
m.Delete("version")
// 순회
m.Store("os", "linux")
m.Range(func(key, value any) bool {
fmt.Printf("%s = %s\n", key, value)
return true // false면 순회 중단
})
// LoadAndDelete (Go 1.15+)
v, loaded = m.LoadAndDelete("os")
fmt.Println("삭제:", v, loaded)
}학습 팁
sync.Map은 키가 한번 쓰고 여러 번 읽히거나, 고루틴마다 다른 키를 사용할 때 최적입니다.
주의할 점
sync.Map은 타입 안전하지 않습니다(any 사용). 대부분의 경우 제네릭 + sync.RWMutex 조합이 더 낫습니다.
자주 묻는 질문
sync.Map란 무엇인가요?
sync.Map 은 동시성 안전한 맵입니다. 키가 안정적이고 고루틴별로 다른 키를 사용할 때 최적입니다.
sync.Map 학습 시 주의할 점은 무엇인가요?
sync.Map 은 타입 안전하지 않습니다( any 사용). 대부분의 경우 제네릭 + sync.RWMutex 조합이 더 낫습니다.
Continue Learning
Go 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.