Go语言技术文章
-
Golang · Go问答 | 1星期前 | JSON · 错误处理 · go · 兼容性 · Go UTF-8 encoding/json/v2 encoding/json/jsontext JSON解码
encoding/json/v2 默认拒绝 JSON 字符串中的无效 UTF-8,因此旧数据在迁移或接入边界处可能出现解码失败。本文用真实无效字节说明严格模式、AllowInvalidUTF8(true) 和 U+FFFD 替换之间的关系,并给出兼容与拒绝的选择边界。170 收藏 -
Go 1.27 已移除 asynctimerchan。本文区分环境配置失效与模块指令报错,以单所有者计时器示例说明 Reset、Stop、排空及并发边界,避免继续依赖旧开关。252 收藏 -
Go 1.27 的 vet 会提示一种容易被忽略的错误包装问题:把实现 error 的值类型错误用指针形态传给 %w,随后 errors.As 按指针类型匹配就会失败。本文用最小代码区分值类型、指针类型和 As 目标,给出修复写法与排查清单。339 收藏 -
Go 1.27 调整了 go tool trace -http 只写端口时的默认监听范围。本文说明 :6060、localhost、127.0.0.1 和 0.0.0.0 的区别,并给出远程查看时更稳妥的 SSH 端口转发写法。279 收藏 -
Go 1.27 的 go test -json 会为 output 事件补充 OutputType。本文说明如何区分普通输出、frame、error 和 error-continue,并用 Go 按行消费交错的测试 JSON 事件。458 收藏 -
Go 1.27 对声明 go 1.27 及以上的模块合并零散 require 块。本文区分布局、indirect 与依赖版本变化,说明注释保留、工具链范围和团队接纳方式,避免把正常整理误判成升级。463 收藏 -
用 expvar.Func 和自定义 Handler 暴露只读运行指标,说明 GET 访问边界、动态计算、路由隔离、命名冲突与数据安全。158 收藏 -
Go 使用 utf8.RuneCountInString 统计 rune,而 len 返回字节数。本文通过中文、emoji 和组合字符说明差异,提供带字节上限、UTF-8 判断及 rune 上限的入口处理示例。262 收藏 -
Go regexp 的 LiteralPrefix 会返回任何匹配必须以其开头的字面量前缀,以及该前缀是否已经覆盖整个正则。本文用几个模式说明如何读取这两个返回值、做候选预筛选,并避开把前缀误当成完整匹配的常见误区。367 收藏 -
Go path.Match 用 shell 风格通配符判断完整资源名,星号和问号不会跨过斜杠。本文说明 path 与 filepath 的边界、完整匹配规则、ErrBadPattern 处理和资源名筛选的落地清单。300 收藏 -
Go regexp.Regexp.AppendText 会把正则表达式文本追加到已有字节缓冲区,输出等同于 String,但不会记录 CompilePOSIX 或 Longest 等改变匹配语义的设置。本文说明缓冲区复用、返回值和可恢复配置的边界。454 收藏 -
Go os.File.Chmod 用 FileMode 更新已有文件的权限位。本文从打开与创建的边界出发,说明 0o600、0o640 的写法、错误处理、修改后读取和 Unix、Windows 差异。195 收藏 -
Go reflect 中,IsValid 判断 Value 是否有效,IsZero 判断有效值是否为其类型的零值。本文用字段查找、nil 接口和指针示例说明两者的调用顺序与 panic 边界。311 收藏 -
Go text/template 可通过 FuncMap 注册返回值与 error 的函数。本文结合状态报告示例说明注册顺序、Execute 错误链、缓冲输出和兼容处理,避免把半成品报告交付给调用方。490 收藏 -
Go http.Request.Write 会把 Request 的请求行、请求头和请求体写成 HTTP/1.1 报文。本文用缓冲区示例说明 URL、Host、Content-Length、分块传输、Body 关闭,以及普通写出和代理写出的区别。442 收藏