Go教程技术文章
-
Go slog 通过 HandlerOptions 的 AddSource 把日志调用位置加入 TextHandler 或 JSONHandler 输出,本文说明 source 的生成、包装影响与生产取舍。402 收藏 -
Golang · Go教程 | 2星期前 | 反射 · reflect · 标准库 · Go教程 · Go 反射 MapIter MapRange reflect.Value.SetIterValue map迭代
Go 反射遍历 map 时,可以用 reflect.Value.SetIterValue 把 MapIter 当前条目的值写入一个可写 Value。本文从目标 Value 的创建、MapRange 遍历到可赋值与 CanSet 边界,给出完整示例和选择建议。402 收藏 -
用 fs.FileInfo 包装类型实现 tar.FileInfoNames 的 Uname 与 Gname,让 FileInfoHeader 写入固定的归档用户名和组名,并说明 UID、GID、路径和内容写入的边界。402 收藏 -
Go crypto/aes 的临时分配通常来自重复初始化、Seal/Open 每次从 nil 切片扩容以及热路径中的字符串转换。本文用 AES-GCM 说明如何复用 AEAD、目标缓冲区和 nonce 存储,并划清别名与 nonce 安全边界。402 收藏 -
Go 的 encoding/csv 会自动忽略完全空行,但不会把只含空格的行当作空行。本文说明 Comment、TrimLeadingSpace 与 FieldsPerRecord 的取舍,并给出带错误处理的读取示例。401 收藏 -
Go WebSocket 握手前应使用 websocket.Upgrader.CheckOrigin 精确校验 Origin。本文说明 Origin 与 Host 的边界、白名单写法、常见放行反例,以及来源校验与身份鉴权的区别。401 收藏 -
Go SQL事务可采用显式提交、延迟回滚兜底结构。本文以库存预留代码说明中间错误返回、ErrTxDone、清理异常与提交失败的处理,并解释事务上下文和盲目重试的风险。401 收藏 -
用 Go 标准库 container/list 和 map 实现一个可运行的 LRU 缓存,说明访问命中、队首移动、更新和队尾淘汰之间的关系,并补充容量与并发边界。401 收藏 -
Go 读取 ShiftJIS 日文 CSV,可先用 x/text 解码为 UTF-8,再交给 csv.Reader 逐条解析。本文给出文件导入函数,说明列数、替换字符和错误处理边界。401 收藏 -
Go roaring 可以用 WriteTo 和 ReadFrom 在 io.Writer/io.Reader 之间传输 Roaring 位图,也可以用 MarshalBinary 和 UnmarshalBinary 处理完整字节切片。本文说明两种入口、错误处理、容量估算与 32/64 位兼容边界。401 收藏 -
同一套 Go 应用需要随不同构建目标携带不同静态资源时,可以让构建标签选择资源入口文件,再由 embed.FS 把选中的目录编进二进制。本文给出默认版与企业版的组织方式,并让业务层保持统一的 fs.FS 接口。400 收藏 -
Go 1.22 之后,http.ServeMux 用模式覆盖的请求集合判断优先级,而不是按注册顺序或通配符名称决定。本文比较静态路径、单段通配、剩余路径通配、方法和主机,并说明如何识别冲突模式。400 收藏 -
bytes.EqualFold 可以比较两个字节切片在 UTF-8 语义下是否经过简单 Unicode 大小写折叠后相等。本文从 ASCII 标识的实际场景出发,解释长度、空切片、非字母字节和非 UTF-8 数据的边界,并给出带封装函数的 Go 示例。400 收藏 -
Go net/url.JoinPath 会合并并清理 URL 路径,但路径段应先用 PathEscape 处理。本文说明特殊字符、斜杠、点段、查询参数和 ResolveReference 的边界。400 收藏 -
Go strings.Cut 不只是把字符串分成两段,还能通过 found 判断分隔符是否存在。本文用配置项解析示例说明如何保留原始输入、区分缺失分隔符与空字段,并用 %w 保留底层错误原因。400 收藏