Go教程技术文章
-
区分 Go 文件 Write、File.Sync 与 Close 的职责,掌握关键文件写入时的持久化和错误处理顺序。248 收藏 -
用 Go io.TeeReader 可以在读取文件、请求体或消息流时同步写入 hash.Hash,边读边计算 SHA-256 而不必先缓存完整输入。本文说明完整消费、摘要结果和写入错误之间的关系,并比较 TeeReader、MultiWriter 与 io.ReadAll 的适用场景。248 收藏 -
通过MultipartReader逐部件接收单文件,用实际读取限额、文件上限、固定复制缓冲及并发准入控制资源。原创示例说明私有暂存、失败清理与成功交付的责任边界,避免把复制缓冲大小误当成进程内存上限。248 收藏 -
Go testing.T.Output 返回一个适合多行诊断的 io.Writer,但不会自动补换行。本文说明并发写入如何按记录同步、行缓冲何时刷新,以及测试函数和父测试结束后为何不能继续 Write。248 收藏 -
Go Hamba Avro 的可空联合适合用 *T 表达 null 与具体类型二选一;当联合包含多个业务分支时,再用指针接收者实现 UnionConverter,显式控制 ToAny、FromAny 和错误处理。248 收藏 -
Go log/slog 可以用 Logger.With 复用批次字段,用 LogAttrs 传递单条记录属性;自定义 Handler 注入动态字段时,应先 Clone Record,再转发 Enabled、WithAttrs 和 WithGroup,避免破坏结构化输出和额外分配边界。248 收藏 -
Golang · Go教程 | 2天前 | 网络编程 · 标准库 · 性能优化 · ip地址 · Go教程 · IPv6 批处理 Go ipv4 netip.Addr Prefix.Contains CIDR net/netip 减少分配 netip.Prefix
Go net/netip 判断地址是否属于指定网段,核心是预解析 netip.Prefix 与 netip.Addr,再调用 Prefix.Contains。本文说明 IPv4/IPv6 边界、解析错误和批处理复用值类型的写法,减少热点循环中的重复解析与额外转换。248 收藏 -
讲清 Go types.Info.FileVersions 的 map 键值、文件版本与 Config.GoVersion 回退关系,并给出按原始 *ast.File 指针稳定读取的原创示例。248 收藏 -
用 go/types 分析泛型签名时,TypeParam.Index 可以提供参数在参数列表中的零基位置。本文说明如何直接读取 TypeParamList,以及如何处理类型检查结果中的无序参数和未绑定参数。248 收藏 -
Go 里 crypto/sha256.New 和 sha256.Sum256 都能计算 SHA-256,但适用场景不同:一次性 []byte 直接用 Sum256,文件、网络流和分块数据用 New。本文用代码、返回类型和边界清单说明如何选择。247 收藏 -
用 Go io/fs 的 fs.FS 与 fs.WalkDir 统一遍历磁盘目录、嵌入资源和测试文件系统,掌握 slash 路径、DirEntry、错误处理、符号链接与 fs.Sub 的边界。247 收藏 -
本文用 go mod tidy -diff、go mod why 和 go mod graph 建立可回滚的依赖整理流程,解释新增、删除、版本变化和 indirect 注释变动的真实含义。247 收藏 -
说明 Go TurkishCase 对 I、i、İ、ı 的映射关系,给出 rune 与 strings 的写法,并梳理从默认映射切换时的字节长度、存量键和回归样本。247 收藏 -
本文用 Go rtreego 实现二维矩形范围检索,说明 Spatial、Rect、SearchIntersect、LimitFilter 的用法,并整理空结果和对象更新时的排查清单。247 收藏 -
Go go/constant.MakeFromBytes 按小端二进制表示把字节切片构造成整数常量。本文说明字节顺序、空切片、高位零字节与低位零字节的区别,并演示如何用 Int64Val 检查结果是否能精确转换为 int64,以及 Bytes 返回绝对值小端字节的边界。247 收藏