Go教程技术文章
-
reflect.VisibleFields 可以按 Go 的字段可见性规则枚举结构体字段,连同嵌入字段也能得到稳定的 Index 路径。本文用一个审计结构体示例说明如何读取字段、区分匿名字段和未导出字段,并处理重名与空结果边界。391 收藏 -
Go 解析 JSON 大整数时,map[string]any 默认会把数字放入 float64,可能改写末尾精度。本文比较结构体整数、json.Decoder.UseNumber 和字符串三种方案,帮助你按数据结构与运算需求选择正确做法。391 收藏 -
用 Go maps.Copy 合并默认配置和覆盖配置,明确 dst/src 的覆盖方向,处理 nil 目标 map,并说明嵌套切片等值的浅复制边界。391 收藏 -
Go net/netip 比较 IPv4 与 IPv4-mapped IPv6 时,应先用 Unmap 统一表示,再按 Addr 或 AddrPort 选择等值判断;本文说明 Is4、Is6、Is4In6、Compare 与端口边界。391 收藏 -
用 Go atomic.Int64.Add 的新值返回语义封装并发序号生成器,并说明顺序、溢出、复制和跨进程使用边界。391 收藏 -
Go 服务做配置热加载时,直接改共享结构体很容易让请求读到半成品。本文用 atomic.Value 发布不可变快照,拆解更新、读取、校验和旧配置回收的边界,并给出可验证的回滚做法。390 收藏 -
Go 的 html/template 会按输出上下文自动转义普通字符串;只有经过明确 allowlist、来源受控的片段,才应在渲染前转换为 template.HTML。本文用一个小页面说明两者的边界、代码写法和验收清单。390 收藏 -
Go 的 archive/zip 中,File.Open 返回的是带解压与校验边界的 io.ReadCloser。读取成员后应关闭它;如果外层使用 OpenReader 打开压缩包,还要另行关闭外层 ReadCloser。390 收藏 -
Go filepath.Match 的方括号表示单字符类,可用范围和 ^ 排除规则匹配文件名;本文同时说明整串匹配、转义、Windows 分隔符以及 ErrBadPattern 的处理方式。390 收藏 -
Golang · Go教程 | 2星期前 | bytes.Buffer · Go教程 · http.MaxBytesReader Go bytes.Buffer容量上限 Go请求体限制 bytes.Buffer Grow
bytes.Buffer没有可配置的最大容量。本文用受限 Writer 检查累计写入长度,并结合 http.MaxBytesReader 限制 HTTP 请求体,处理预分配、复用和明确超限错误。390 收藏 -
用一个可迁移的 Go 泛型 API 例子,解释约束中的 ~T 如何放宽命名类型匹配范围,以及它对调用方兼容性、返回值设计和后续演进的影响。389 收藏 -
讲解 Go multipart 上传文件名的安全处理:原名只作展示,限制请求体,按内容识别类型,生成随机存储名,并用 O_EXCL 防止覆盖已有文件。389 收藏 -
把 os.DirFS 接到模板、压缩包或配置读取代码后,./config.yaml 这类看似正常的路径会被 io/fs.ValidPath 拒绝。本文用最小示例解释相对路径规则、filepath 与 path 的边界,以及迁移旧代码时如何保留用户输入语义。388 收藏 -
Go 1.26 重写了 go fix,可以自动应用一批现代化改写。本文从 new(expr) 这个最小例子出发,说明 go.mod 版本门槛、变更预览、测试核对和回滚边界,帮助旧项目安全尝试 go fix。388 收藏 -
用 Go 1.22 及以上版本的 net/http ServeMux 读取路径通配符,讲清 PathValue、通配符边界、路径转义和旧版本兼容处理。388 收藏