Go语言技术文章
-
Golang · Go问答 | 1个月前 | 流式处理 · 工程实践 · net/http · Go问答 · Go HTTP服务器 请求体 流式请求 EnableFullDuplex http.ResponseController
http.ResponseController.EnableFullDuplex 解决的是 HTTP 服务端同时读取请求体和写出响应的边界问题。本文用一个边读边回传的 Go Handler 拆开它的默认行为、启用时机、协议限制和测试检查点,说明什么时候该用,什么时候不该把它当成通用加速开关。296 收藏 -
用一个可运行的 Go 客户端示例验证 NewRequestWithContext 的构造顺序、取消传播和 nil context 边界。296 收藏 -
用 Go 的 url.Values、Has、Get 和 ParseQuery 区分查询参数的缺失、空值、重复值与编码错误,并说明 Add、Set、Encode 的写回规则。296 收藏 -
Go 模板 Parse 成功只说明模板文本通过了解析,Execute 仍可能因结构体字段、map 键、方法、函数注册、嵌套模板或 Writer 错误而失败。本文按执行边界整理排查顺序和最小示例。296 收藏 -
用 Go time.LoadLocation 集中管理 IANA 时区,区分 Parse 与 ParseInLocation,统一 UTC 存储和 Time.In 展示,并说明夏令时与 tzdata 缺失时的处理边界。296 收藏 -
用 Go archive/tar 逐项读取归档,在写盘前校验条目路径,拒绝目录穿越、链接和特殊文件,并限制单项与总展开资源。296 收藏 -
解释 Go bufio.Scanner 连续空 token 停止或 panic 的根因,区分 nil token、advance 与 ErrFinalToken,并给出安全 SplitFunc 写法。296 收藏 -
Go 的 map 可以在 range 遍历中删除当前键,但删除未到达的键会改变本轮可见结果,新增键则可能出现也可能被跳过。本文用可运行示例拆开这三个边界,并说明并发场景为什么仍然不安全。295 收藏 -
Go 反射中 CanSet 为 false 通常不是 Set 写错,而是 Value 没有可写地址,或字段受未导出规则保护。本文从 ValueOf、Elem 和结构体字段三个现场定位原因,并给出安全修改与检查方法。295 收藏 -
signal.NotifyContext 让操作在收到系统信号时通过 ctx.Done 退出,但取消上下文与停止信号订阅是两件事。理解 stop 的资源释放和默认信号行为,才能写出可重复启动、可测试的优雅退出代码。295 收藏 -
Go 1.27 会让 go.mod 中 go 1.27 及以上的模块在 traceback 首行显示 runtime/pprof goroutine 标签。本文区分标签来源和展示开关,并给出 go.mod、go.work、//go:debug 与 GODEBUG=tracebacklabels=0 的控制边界。295 收藏 -
Go big.Float 比较结果不稳定,通常是精度、舍入模式或类型转换顺序不一致。本文用 Int、Rat 和 Float 的边界示例,说明如何设置二进制精度、检查 Acc,并用 Cmp 完成可靠比较。295 收藏 -
Go 的 net.Dialer 通过 LocalAddr 指定出站连接的本地 IP 和端口,通过 Timeout 限制拨号等待;本文说明 tcp 地址类型匹配、context 截止时间、连接读写 deadline 以及常见绑定失败的排查方法。295 收藏 -
用 Go io.Pipe 把压缩写入端和上传读取端连接起来,理解无内部缓冲带来的自然背压,并处理成功关闭、生产失败和上传失败的资源收口。295 收藏 -
io.Reader 一次 Read 不保证填满缓冲区。本文用固定 8 字节头和变长负载示例,讲清 io.ReadFull 的补齐语义、EOF 与 ErrUnexpectedEOF 的区别、长度上限和网络读超时。295 收藏