Go语言技术文章
-
Go image/png 通过 png.Encoder 的 CompressionLevel 控制编码策略,支持默认、无压缩、最快和最高压缩四种选择。本文用完整示例说明怎样接入 io.Writer、怎样处理编码错误,以及为什么 BufferPool 不能替代压缩级别设置。490 收藏 -
Go url.PathEscape 用于编码单个 URL 路径片段,不是整条 URL 或查询参数的通用编码器。本文结合动态资源标识、斜杠和空格等字符,说明 PathEscape 的使用位置,并比较 QueryEscape 与 url.URL 的选择边界。490 收藏 -
Doublestar 默认会把静态前缀不存在视为无匹配结果。本文区分空结果、ErrBadPattern、ErrPatternNotExist 与普通 I/O 错误,并给出 WithFailOnPatternNotExist 的迁移写法。490 收藏 -
Go riff.Next 返回的块 Reader 会在下一次 Next 后失效。本文解释共享读取状态,给出带单块、总量和数量预算的数据复制函数,并说明并发与 LIST 嵌套读取的边界。490 收藏 -
RuneError 不能单独代表解码失败:DecodeRuneInString 返回 RuneError 且 size 为 1 时,才表示非空输入的 UTF-8 编码非法;合法的 U+FFFD 通常占 3 个字节,空字符串则返回 size 为 0。490 收藏 -
Go text/template 可通过 FuncMap 注册返回值与 error 的函数。本文结合状态报告示例说明注册顺序、Execute 错误链、缓冲输出和兼容处理,避免把半成品报告交付给调用方。490 收藏 -
从 context 没有传递、HTTP 请求未绑定 context 和自定义等待未监听 Done 三个角度,说明 Go 超时后下游仍在执行的原因与修正方式。490 收藏 -
bufio.Writer.Reset 可以复用内部缓冲区并切换下游 io.Writer,但会丢弃未 Flush 的数据并清除错误状态。本文用一个批量写入场景说明 Flush、Reset、资源关闭和并发边界。490 收藏 -
用 strings.CutPrefix 一次完成可选前缀的判断与去除,讲清命中、未命中、空前缀和旧写法迁移时的返回值,附可直接改造的 Go 示例。490 收藏 -
用 Go httptest.Server 搭建可控的外部 API 替身,检查请求方法、路径、请求体和响应错误,并处理响应体与测试服务的关闭边界。490 收藏 -
从 go env 确认 GOMODCACHE 实际路径,区分 GOPATH/pkg/mod 与 GOCACHE,再用父目录、属主和最小写入测试定位权限错误,并给出迁移与复查方案。490 收藏 -
unsafe.String 只把一段连续字节按指定长度解释为字符串,不会替你检查对象类型、所有权或 UTF-8。本文从 []byte 的正确入口讲清指针、长度、可修改性和生命周期边界,并给出该复制时的判断方式。490 收藏 -
Go encoding/xml 中,嵌套类型的 XMLName 显式标签与外层字段标签不一致会触发名称冲突。本文用固定根节点和可复用子节点两个写法说明如何稳定解码,并梳理命名空间、大小写和 Marshal 的边界。490 收藏 -
panicreturn 不是 Go 内置关键字,而是用命名返回值、defer 和 recover 在函数边界内把可隔离的 panic 转成 error。本文说明边界选择、goroutine 保护、资源清理和测试重点。490 收藏 -
go list -m all 展示的是模块构建列表,不等于某个目标包实际编译进二进制的全部依赖。本文从模块模式、vendor、workspace、构建条件和二进制 BuildInfo 五层排查版本不一致。490 收藏