Go教程技术文章
-
用 Go maps.Clone 复制 map,隔离顶层写入,并通过值类型判断 slice、指针等嵌套数据是否还需要额外复制。163 收藏 -
bufio.Scanner 默认按换行切分,输入中的零字节通常会作为普通字节保留。本文用小样例排查默认边界、自定义 NUL 分隔和超长 token 限制,并给出 Scanner 与 Reader 的选择建议。163 收藏 -
用 Go http.MaxBytesReader 限制请求体,识别 *http.MaxBytesError,并在响应头提交前稳定返回 413,区分超限、EOF 和其他读取错误。163 收藏 -
Go 的 cmp.Equal 默认按切片下标比较,元素相同但顺序不同仍会判不等。本文用 cmpopts.SortSlices 为基本类型和结构体切片提供确定性排序规则,并说明重复元素、nil 与空切片的边界。162 收藏 -
Go maps.Copy 会把来源 map 的键值写入目标 map,同名键由来源覆盖。本文围绕默认配置、文件配置和环境覆盖说明调用顺序、nil 目标与嵌套 map 的浅层边界。162 收藏 -
VerifyConnection 可以在 Go 默认的证书链与主机名校验之后追加应用级约束。本文用 SPKI SHA-256 摘要限制服务端公钥,并给出双摘要轮换、会话恢复和错误处理建议。160 收藏 -
WithCancelCause 可以让调用链继续用 ctx.Err() 判断取消类别,同时通过 context.Cause(ctx) 保留超载、用户主动停止等业务原因。本文给出迁移写法和父子 Context 的边界清单。160 收藏 -
Go 1.24 的 os.Root 会在目录边界内解析符号链接,本文区分 Root 的访问校验与 Root.Symlink 的创建语义,说明根内链接、越界目标、绝对链接和资源释放的处理方式。160 收藏 -
使用 Go embed.FS 暴露静态资源时,先固定嵌入目录,再用 fs.Sub 把对外资源根缩小到指定子目录,最后接入 http.FileServer。本文结合路径规则、错误处理和缓存边界给出一套不容易混淆的写法。160 收藏 -
Go hex.Dumper 可以接入任意 io.Writer,按分块写入生成带偏移、十六进制和 ASCII 列的可读转储。文章说明 16 字节分行、Close 尾行收尾、错误处理及与 Dump、EncodeToString 的选择边界。159 收藏 -
Go 1.24 及以上通过 http.Server.Protocols 和 SetHTTP2 配置只启用 TLS 上的 HTTP/2,并梳理默认值、ALPN 与明文 h2c 的边界。159 收藏 -
Go tview 中,后台 goroutine 不要直接修改界面 primitive。把变更放进 Application.QueueUpdate 或 QueueUpdateDraw:前者只保证串行执行,后者执行后立即重绘;事件处理器内部则直接修改并交给主循环绘制。159 收藏 -
Go 的 io.MultiWriter 会把同一批字节按传入顺序写入多个 io.Writer,某个目标出错后立即停止。本文用文件和内存缓冲区示例说明用法、错误边界与并发注意事项。158 收藏 -
go-toml/v2 默认会忽略目标结构体没有的配置键。本文用 Decoder.DisallowUnknownFields 拒绝未声明字段,并说明 StrictMissingError、嵌套结构体与 map 的边界。158 收藏 -
用一个可复用的泛型小工具说明 Go 如何通过类型集合限制底层类型,并区分精确类型、近似底层类型、方法约束与 comparable 的使用边界。158 收藏