Go问答技术文章
-
Go sync.Cond 的 Signal 只是唤醒提示,不代表共享条件已经成立,也不会保存无人等待时的通知。本文用队列示例说明为什么 Wait 必须在持锁的 for 循环中重新检查状态,以及状态修改、Signal 和 Broadcast 的配合边界。422 收藏 -
Go encoding/xml 的 InputOffset 返回当前解析器的字节偏移,既是最近返回 token 的结束位置,也是下一个 token 的起始位置。本文用流式 token 记录和错误上下文示例说明调用时机、字节与行列的区别,以及 UTF-8 和 EOF 边界。422 收藏 -
Go Humanize 的 Bytes 和 IBytes 适合把字节数转成可读文本,但文本排序会受数字位数和单位影响。正确做法是保留原始字节数按数值排序,旧字符串则先用 ParseBytes 转回统一数值。422 收藏 -
本文围绕 Go httptrace.PutIdleConn 解释连接回收到 Transport 空闲池时的 nil 与错误信号,并对比 DisableKeepAlives、响应体关闭和 HTTP/2 下的判断边界。422 收藏 -
Golang · Go问答 | 2星期前 | 接口 · 标准库 · IO · 性能 · Go问答 · Go Writer 字符串写入 WriteString io.StringWriter io.WriteString
Go 的 io.StringWriter 用一个 WriteString 方法描述字符串写入能力。本文说明 io.WriteString 的优先分发规则、如何为自定义 Writer 增加 WriteString,以及迁移时的返回值、错误和兼容边界。421 收藏 -
Go 中 crypto/rand 用于令牌、密钥和不可预测的随机值,math/rand 用于模拟、抽样、洗牌和可复现测试。本文用选择清单、代码示例和迁移边界说明两者如何分工。421 收藏 -
Go os.RemoveAll 删除只读目录失败时,先判断错误来自文件本身、父目录权限还是平台差异,再决定是否受限修复权限并重试。本文给出安全边界、错误分类和可复用的 Go 处理示例。421 收藏 -
Go test 命中缓存时会显示 (cached)。本文说明 -count=1 如何只对当前命令强制重新执行测试,并区分 -run、go clean -testcache、构建缓存和缓存决策诊断。421 收藏 -
Golang · Go问答 | 2星期前 | defer · 错误处理 · go · 返回值 · 排错 · 命名返回值 Go defer defer 修改返回值 error 包装 return 执行时机
Go defer 可以在函数真正返回前修改命名返回值,但不能把普通局部变量的修改追溯到已经准备好的返回结果。本文对比两种写法,并给出错误包装与可读性边界。420 收藏 -
Go filepath 会按照编译目标操作系统选择路径分隔符和绝对路径规则,因此 Join、Clean、IsAbs 等结果可能与开发机不同。本文区分本地文件系统路径和斜杠协议路径,并给出 path、ToSlash、FromSlash、Abs 与 Rel 的使用边界。420 收藏 -
解释 Go runtime/debug.SetMaxStack 的单 goroutine 栈上限、旧值返回、只限制未来增长的语义,并区分堆内存、GC 和线程数治理边界。420 收藏 -
Go x/net/ipv4.PacketConn 将数据载荷、ControlMessage 与源地址分层返回。本文从 ReadFrom 和 WriteTo 的接口边界解释原因,并给出控制字段配置、接口选择和跨平台排查方法。420 收藏 -
区分JetStream有序读取与共享任务责任,说明durable pull consumer、显式确认、背压配置和业务幂等,并提供Go批次消费示例。420 收藏 -
围绕 Go sync.Pool 升级后命中率、对象身份和延迟变化,建立可重复的小实验,区分 API 契约、垃圾回收和业务所有权问题,并给出是否继续池化的判断清单。420 收藏 -
Go SetEscapeHTML(false) 适用于需要可读字符的独立 JSON 输出。通过完整示例区分字节表示与解析值,并说明 JSON 必要转义、末尾换行、二次编码及固定字节契约的边界。420 收藏