-
读写锁允许多个读操作并发执行。核心结论读多写少场景性能更好写操作独占锁避免读锁阻塞详细分析RWMutex通过分离读写锁计数实现并发读。写锁会阻塞所有读写操作。常见问题如何优化?写频繁场景不一定比Mutex更优。
-
未退出的goroutine可能导致内存泄漏。核心结论高并发易积累goroutine结合context控制退出使用WaitGroup等待完成详细分析阻塞操作或无限循环可能导致goroutine长时间存活。造成资源浪费和性能下降。常见问题如何优化?为每个goroutine设计退出机制并定期监控数量。
-
向已关闭的channel发送数据会触发send on closed channel panic。核心结论发送前确保channel未关闭关闭操作必须唯一接收方可安全读取已关闭channel详细分析channel只能关闭一次,重复关闭或关闭后发送会panic。典型场景包括多goroutine向同一channel发送数据。常见问题如何优化?明确关闭channel责任,只由发送方关闭,并用标志变量控制。
-
Go 使用 string([]byte) 将字节数组转为字符串。核心结论类型转换即可会创建新字符串常用于网络和文件读取详细分析转换后字符串不可修改。底层会发生内存拷贝。常见问题性能会有问题吗?一般不会。
-
Go 中将数字转换为字符串主要使用 strconv 包。核心结论int 转 string 使用 strconv.Itoa也可使用 strconv.FormatIntfmt.Sprintf 更灵活但性能略低详细分析Itoa 是最常见的 int 转字符串方式。FormatInt 适合指定进制。常见问题直接 string(int) 可以吗?不可以,会得到 ASCII 字符。
-
panic用于不可恢复的严重错误。核心结论会中断调用栈影响程序稳定性业务错误应返回error详细分析panic更适合系统级异常。业务逻辑应通过error传递。常见问题如何优化?统一错误处理与日志记录机制。
-
Go 使用 time.Parse 解析时间字符串。核心结论需要指定 layoutlayout 是固定模板详细分析layout 使用 2006-01-02 15:04:05。常见问题为什么这么奇怪?这是 Go 的设计约定。
-
Go 标准库即可支撑高性能 HTTP 服务。核心结论net/http 性能稳定支持高并发生态成熟详细分析多数业务无需替换 HTTP 引擎。优化重点在业务逻辑。常见问题一定要用 Gin 吗?不一定。
-
对nil指针调用方法会触发nil pointer dereference panic。核心结论调用前必须判空避免未初始化对象的方法调用使用防御式编程提高安全性详细分析结构体指针未初始化或接口未赋值时调用方法会panic。这是Go常见运行时错误之一。常见问题如何优化?在调用前检查指针是否为nil,必要时初始化对象。
-
context只负责通知取消,不会强制终止执行。核心结论需要主动监听ctx.Done()不会自动中断代码属于协作式取消机制详细分析context通过关闭Done通道通知调用方。若代码未检测信号,goroutine会继续执行。常见问题如何优化?在循环或阻塞点定期检查ctx状态。
-
WaitGroup计数不匹配会导致死锁。核心结论Add与Done必须成对Wait会阻塞直到计数为0计数负数会panic详细分析Add调用在goroutine启动前,Done在goroutine完成时调用。计数不匹配会导致主goroutine永远阻塞。常见问题如何优化?严格保证Add和Done成对,避免在goroutine内部调用Add。
-
defer 在函数返回值确定后、真正返回前执行。核心结论defer 后进先出可修改命名返回值与 return 顺序固定详细分析return 会先计算返回值。随后执行 defer。常见问题defer 能影响返回值吗?仅限命名返回值。
-
slice 是对 array 的封装,更常用也更灵活。核心结论array 长度固定slice 长度可变实际开发常用 slice详细分析array 更偏底层,slice 更符合业务需求。大多数 Go 代码中都会优先使用 slice。常见问题新手应该直接学 slice 吗?是的。
-
Go 语言中将字符串转换为数字通常使用 strconv 包。核心结论字符串转 int 使用 strconv.Atoi更通用的方法是 strconv.ParseInt转换失败会返回 error详细分析strconv.Atoi 适用于十进制整数字符串。strconv.ParseInt 可指定进制和位数,更灵活。常见问题字符串不是数字会怎样?会返回非空 error。
-
panic用于异常中断,recover用于捕获异常。核心结论recover只能在defer中使用适合边界层错误处理不应滥用详细分析panic会逐层展开调用栈执行defer。recover可在defer中恢复程序运行。常见问题如何优化?业务错误优先使用error返回值。