面试真题

Go · 简单 · 百度

map与切片哪个是线程安全的

简单 Go 🎤 百度
参考答案
结论:Go语言的map和slice均非线程安全,并发读写会导致panic或数据错乱。原理:map底层无锁,并发写触发runtime抛出'concurrent map writes'崩溃;slice底层是结构体含指针/长度/容量,并发append可能因竞态导致元素丢失或长度不一致。线程安全需借助sync.Mutex/RWMutex保护,或map用sync.Map,slice用原子操作+锁。注意:并发读不写安全,但读同时写仍不安全。示例:多goroutine写map必须加锁。
题目整理自公开面经,答案由校招宝自研生成,仅供参考