Go问答技术文章
-
Go sync.Cond.Wait 必须在持有 Cond.L 时调用。本文说明 Wait 原子释放与重新加锁的边界、为什么要用 for 重新检查条件,以及状态修改、通知和 channel 选择的实用判断。164 收藏 -
reflect.Value.SetString 只有在目标值有效、Kind 为 String 且 CanSet 为 true 时才适合调用。本文说明指针取 Elem、结构体字段和未导出字段的边界。400 收藏 -
Go encoding/binary.Uvarint 返回 n=0 通常表示当前字节切片还不完整,不是已经确认格式错误。本文解释 n 的正负含义、补读缓冲区的方法,以及 Uvarint 与 ReadUvarint 的选择边界。171 收藏 -
Go context.WithValue 取不到值,通常不是 Context 自己丢了数据,而是写入和读取使用了不同的键类型、键值或 Context,或者取值后的类型断言不匹配。本文按这四个边界给出排查与封装方法。290 收藏 -
Go context 取消后下游查询仍在继续,通常不是取消函数失效,而是信号没有传到查询 API,或数据库驱动没有实现可取消路径。本文用 QueryContext、rows 生命周期和驱动边界逐层排查。467 收藏 -
Go reflect.Value.MethodByName 找不到方法时会返回零 Value,不能直接 Call。本文说明 IsValid 判断、导出方法与大小写、值接收者和指针接收者差异,以及反射调用前的签名检查。236 收藏 -
filepath.Glob 返回空结果不一定是模式写错:无匹配时 err 为 nil,模式语法错误时才会返回 filepath.ErrBadPattern。本文给出区分两类结果的写法,并补充跨平台路径和文件系统错误边界。220 收藏 -
通过可取消的四模式实验区分Go channel接收阻塞、nil通道和关闭状态,结合通道身份、发送路径与等待关系排查,并说明超时、len和goroutine栈能证明的范围。366 收藏 -
Go 的 url.Values.Get 在参数缺失和参数值为空时都会返回空字符串。要保留这两种语义,应使用 Has 判断键是否出现,或直接读取 map 中的 []string,并结合 ParseQuery 的错误处理统一封装。218 收藏 -
Go WaitGroup 出现 negative WaitGroup counter 通常是 Done 重复调用、Add 与 Wait 时序错误或批次复用不当。本文用最小示例、排查清单和安全写法定位计数失衡。432 收藏 -
Golang · Go问答 | 2天前 | 并发 · pprof · 性能排查 · Go问答 · Go Goroutine pprof net/http/pprof runtime/pprof 并发排障
Go goroutine 泄漏的关键不是单看数量,而是定位长期阻塞且再也等不到解除条件的代码行。本文从数量趋势、runtime/pprof 栈、channel 与锁的退出条件入手,给出可复用的排查和修复路径。446 收藏 -
区分Go Timer Reset的新旧通道语义、兼容设置与已投递业务事件,给出单拥有者处理方式和时间观察样例,解释Reset布尔值、旧通知清理及AfterFunc回调边界。137 收藏 -
Golang · Go问答 | 2天前 | 标准库 · 时间处理 · Go问答 · Go 时区 time.Parse time.ParseInLocation time.Location 时间偏移 RFC3339
Go time.ParseInLocation 解析结果看起来偏移,通常是无时区字符串被按不同 Location 解释,或把同一时刻的 UTC 展示误当成时间被修改。本文用 Parse、ParseInLocation、Zone、Location 和 Equal 拆解原因,并给出稳定的输入与排障写法。297 收藏 -
Go 的 time.Format 布局中的 MST 只是时区缩写占位符,不会单独完成时区转换。本文区分 MST、数值偏移、Location 和 In 的职责,并说明带缩写字符串解析时的零偏移边界。457 收藏 -
本文围绕 Go httptrace.PutIdleConn 解释连接回收到 Transport 空闲池时的 nil 与错误信号,并对比 DisableKeepAlives、响应体关闭和 HTTP/2 下的判断边界。422 收藏