Go问答技术文章
-
Go JSON 时间字段解析失败,应先区分 JSON 类型、RFC3339 格式与时区契约。结合标准字段和旧格式输入示例,说明 ParseInLocation、空值、必填检查及常见格式误区。268 收藏 -
Go 的 os.ProcessState.SysUsage 返回平台相关的资源使用对象,不同系统的底层类型和字段语义并不完全相同。本文从 ProcessState 的生命周期、类型观察、平台适配和生产日志四个方面说明如何安全使用。135 收藏 -
Go 的 url.PathUnescape 遇到尾部百分号或非十六进制编码时会返回错误。本文用最小代码说明如何判断输入、区分路径和查询解码,并在进入业务逻辑前安全处理坏路径。426 收藏 -
Go HTTP 服务端重复读取 Body 得到空内容,通常是中间件已消费原流。通过小服务说明入口限量缓存、重建读取器、错误处理与关闭边界,并区分 GetBody 和已解析对象复用。232 收藏 -
Go ServeMux 出现路由冲突时,先沿注册阶段的 panic 栈找到两个 pattern,再比较方法、主机和路径的具体程度;交换注册顺序不能解决同等具体的冲突。149 收藏 -
区分 time.Time 零值与 Unix epoch 的语义,说明 IsZero、Unix、可选时间字段和数据库时间字段应该分别怎样判断。278 收藏 -
从 context 没有传递、HTTP 请求未绑定 context 和自定义等待未监听 Done 三个角度,说明 Go 超时后下游仍在执行的原因与修正方式。490 收藏 -
Go goroutine 退出不会自动关闭 channel。本文区分发送阻塞、接收等待与取消确认,用固定工作者和单一关闭者说明提前停止消费的处理方式。234 收藏 -
Go defer 写在循环里时,文件通常不会在每轮结束后马上关闭。本文解释 defer 的函数级生命周期,并对比局部函数封装与显式 Close 两种修正方式。289 收藏 -
Golang · Go问答 | 1天前 | 接口 · 标准库 · IO · 性能 · Go问答 · Go Writer 字符串写入 WriteString io.StringWriter io.WriteString
Go 的 io.StringWriter 用一个 WriteString 方法描述字符串写入能力。本文说明 io.WriteString 的优先分发规则、如何为自定义 Writer 增加 WriteString,以及迁移时的返回值、错误和兼容边界。421 收藏 -
Golang · Go问答 | 1天前 | 切片 · 标准库 · 性能 · 编码 · Go问答 · Go 文本格式化 encoding.TextAppender AppendText TextMarshaler 低分配
Go 1.24 新增的 encoding.TextAppender 允许类型把文本直接追加到调用方已有的 []byte。本文用一个自定义类型说明 AppendText 的实现、缓冲区边界、错误返回,以及怎样与 TextMarshaler 保持兼容。342 收藏 -
Go 1.23 及以上使用 slices.Collect 收集空 iter.Seq 时会得到 nil 切片。本文区分 nil 与非 nil 空切片、interface 包装和 JSON 输出,并给出稳定返回 [] 的处理方式。384 收藏 -
Go 里的 defer 绑定外围函数返回,不会在 for 的每轮迭代结束时自动执行。把 defer 放在长循环中处理文件、响应体或 Rows,可能让资源持续累积;本文给出抽函数、显式关闭和代码审查的取舍。232 收藏 -
Go 接口只有具体类型和值都为空时才等于 nil。本文用最小示例说明 typed nil 指针装进 error 或 any 后为何仍然非 nil,并给出返回、排查和 reflect 的稳妥写法。163 收藏 -
Go MultiWriter 在同次 Write 遇错时会停止后续目标。本文用双输出改造示例区分前置副作用、外层重复调用和缓冲延迟错误,并说明 Flush 与重试边界。310 收藏