Go教程技术文章
-
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 收藏 -
Golang · Go教程 | 2星期前 | 文件读取 · 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 的 gzip.Writer 可以在首次写入前通过 Name 和 ModTime 设置 GZIP 头元数据;本文给出可读回核对的完整示例,并说明 Close、Reset、零值时间和编码边界。215 收藏 -
Go 做表单或配置校验时,可以用 errors.Join 汇总多个失败项,用 errors.Is 分别判断错误类别;需要给用户展示每一项时,再读取 Unwrap() []error。214 收藏 -
net.ParseIP 返回的 IPv4 地址也是 16 字节,String() 只是显示形式。本文解释 IPv4-mapped IPv6 的统一表示,并给出用 IP.To4() 判断 IPv4 的可靠写法。214 收藏 -
maps.Clone 会新建顶层 map,但只对键和值做普通赋值;当值是 slice、嵌套 map、指针或包含引用的结构体时,内部状态仍可能共享。本文用对照代码说明影响范围,并给出逐层复制的写法。214 收藏 -
代码生成器不要手工维护缩进和导入顺序:先输出完整且合法的 Go 文件,再用固定版本 gofmt 统一空白,用 gofmt -d 检查生成结果是否稳定。214 收藏 -
Go slices.BinarySearchFunc 遇到重复比较键时返回等价区间最左索引;本文说明 found、插入点、比较器和继续扫描全部重复项的边界。214 收藏 -
Go flag.Func 可以把字符串解析、业务校验和错误返回集中在回调中。本文用环境参数示例说明先校验后赋值、FlagSet 错误策略、重复参数行为和表驱动测试。214 收藏 -
用 Go 的 io.CopyN 处理固定长度读取时,区分完整复制、短读 EOF 与底层读取错误,并给出可验证的判断代码。213 收藏 -
errors.As 不只匹配具体错误类型,也能匹配错误链中实现某个接口的错误。声明接口变量并把其地址传入 errors.As,即可按能力处理不同实现,同时保留多层包装上下文。213 收藏 -
Go 验证 HMAC 时应先用同一密钥和同一原始消息重算标签,再把对方标签解码为字节,最后交给 hmac.Equal 做恒定时间比较。本文给出函数与 Webhook 示例。213 收藏