Go语言技术文章
-
filepath.Join 会清理路径文本,但不会替应用保证结果仍在指定根目录内。本文用最小示例说明 Join、IsLocal 与 os.OpenInRoot 的边界,并给出四类输入的验证矩阵。372 收藏 -
os.Stat 成功不保证后续 Open 成功。文章说明路径竞态、权限差异与文件句柄的区别,给出直接打开、限量读取和错误分类示例,并划清排他创建与可信根目录访问的边界。369 收藏 -
Go 的 io.Reader 允许在最后一批数据返回 n > 0 与 io.EOF,若代码忽略 n、处理空缓冲区或把整个 buf 当成有效数据,就会出现末尾多处理一次。本文用最小示例说明原因,并给出按 n 与 err 分开处理的可靠写法。300 收藏 -
Go 的 url.URL.String 可以保留 # 后的 Fragment,但 RequestURI 只生成 HTTP 请求需要的路径与查询部分,因此看起来像是 Fragment 丢失。本文用最小示例说明两者的边界,并给出需要把片段信息传给服务端时的改造方式。216 收藏 -
Go 的 encoding/csv 负责解析记录和字段,不会自动识别 GBK 或 GB18030。本文从 UTF-8、GBK 解码边界出发,说明中文 CSV 出现乱码的原因与可直接复用的修正写法。126 收藏 -
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 收藏