Go语言技术文章
-
Go 的 301、302、303 重定向会把 POST 改成 GET;本文解释 307/308、GetBody 与 CheckRedirect 的关系,帮助你避免请求体丢失和重复提交。216 收藏 -
从平台、路径、工具链、构建标签、共同依赖和符号查找六个边界排查 Go plugin 加载失败,给出可复现的 Open/Lookup 错误判断方法。216 收藏 -
Go base64.DecodeString 返回 CorruptInputError 时,错误值就是需要排查的零基字节偏移。本文用 errors.As 提取位置,结合上下文、字母表、补位、UTF-8 和 Strict 模式,区分非法字符与输入截断。216 收藏 -
multipart.ReadForm 会把超出内存预算的文件部分落到临时目录,Form.RemoveAll 用于删除这些临时文件。本文区分 net/http Server 自动清理与独立解析时必须手动清理的边界。216 收藏 -
Go 写 SSE 接口时,关键不是循环写字符串,而是正确设置 text/event-stream、用 http.Flusher 刷新缓冲,并用 Request.Context 感知浏览器断开。本文给出可落地的 Go 服务端与浏览器接收示例,补充心跳、代理缓冲和重连边界。215 收藏 -
Go 读取包含 0x00 的二进制流时,不要把零字节当成文本结束符。本文解释 Scanner 的限制,并用 bufio.Reader 和 io.ReadFull 处理分隔帧、固定长度帧与 io.EOF。215 收藏 -
用 Go io.MultiWriter 将同一份输入同时写入文件和 SHA-256 摘要,理解顺序写入、短写、错误中断与临时文件提交,避免文件和校验值不一致。215 收藏 -
Go 类型断言报错时,先确认接口中的动态类型,再用双返回值和 %T 定位原因,并区分 nil 接口与 typed nil,避免用 panic 掩盖输入协议问题。215 收藏 -
Golang · Go教程 | 3星期前 | 文件读取 · Go教程 · Go csv.Reader Comment Go CSV 跳过注释行 encoding/csv 注释字符 csv.Reader 前导空白
Go 的 csv.Reader 可以通过 Comment 跳过以指定字符开头的整行,但前导空白会改变判定结果。本文用原创示例讲清配置方式、字段边界、错误处理与不规则 CSV 的选择策略。215 收藏 -
讲清 Go math/bits.Add64 的输入进位、sum 与 carryOut 返回值,以及多字长加法中从低位向高位传递进位的正确写法215 收藏 -
用 Go database/sql 设计业务事务时,把 BeginTx、Commit 和 Rollback 放在用例外层,让仓储函数只接收 Tx 并返回错误,避免事务职责分散。215 收藏 -
Go 的 gzip.Writer 可以在首次写入前通过 Name 和 ModTime 设置 GZIP 头元数据;本文给出可读回核对的完整示例,并说明 Close、Reset、零值时间和编码边界。215 收藏 -
Go 流式响应发送 Trailer 时,已知字段名必须在首次 WriteHeader、Write 或 Flush 前通过 Trailer 响应头声明;正文写完后再设置最终值。本文用一个 NDJSON 小项目讲清服务端顺序、客户端 EOF 读取、TrailerPrefix 边界和自动化验收。215 收藏 -
Go 做表单或配置校验时,可以用 errors.Join 汇总多个失败项,用 errors.Is 分别判断错误类别;需要给用户展示每一项时,再读取 Unwrap() []error。214 收藏 -
net.ParseIP 返回的 IPv4 地址也是 16 字节,String() 只是显示形式。本文解释 IPv4-mapped IPv6 的统一表示,并给出用 IP.To4() 判断 IPv4 的可靠写法。214 收藏