面试真题

Go · 简单 · 闪送

map、slice未初始化操作会怎样,发生panic应该怎么办

简单 Go 🎤 闪送
参考答案
结论:未初始化map为nil,直接赋值panic;未初始化slice为nil,append安全但索引访问panic。要点:1.nil map写入报'assignment to entry in nil map',须用make或字面量初始化;2.nil slice的len/cap为0,append会自动分配底层数组,但下标读写为越界panic;3.发生panic时可用defer+recover捕获避免崩溃,但应编码前置检测初始化。原理:map变量是指针,nil无hmap结构无法存数据;slice结构体含空指针,append触发内存分配。示例:var m map[int]int; m[1]=2 // panic; m=make(map[int]int)后正常。
题目整理自公开面经,答案由校招宝自研生成,仅供参考