go 面试题

go中发生panic的场景:

  • 数组/切片越界
  • 空指针调用。比如访问一个 nil 结构体指针的成员
  • 过早关闭 HTTP 响应体
  • 除以 0
  • 向已经关闭的 channel 发送消息
  • 重复关闭 channel
  • 关闭未初始化的 channel
  • 未初始化 map。注意访问 map 不存在的 key 不会 panic,而是返回 map 类型对应的零值,但是不能直接赋值
  • 跨协程的 panic 处理
  • sync 计数为负数。var wg sync.WaitGroup;wg.Add(1) ;wg.Done() ;wg.Done() // 再减一次,计数 = -1,会触发 panic
  • 类型断言不匹配。var a interface{} = 1; fmt.Println(a.(string)) 会 panic,建议用 s,ok := a.(string)
posted @ 2025-09-24 20:22  不报异常的空指针  阅读(10)  评论(0)    收藏  举报