Go教程技术文章
-
用 Go 的 io/fs.ReadDir 和 os.DirFS 按目录层级筛选文件,解释排序、DirEntry 判断、错误处理与大目录内存边界,并给出可运行示例。135 收藏 -
Go 1.21 引入的 clear 内置函数适合批量清空 map,但它并不等于释放底层容量。本文用缓存复用、重新分配和基准测试说明三种清理策略的边界。134 收藏 -
Go regexp.FindAllStringSubmatchIndex 返回的是按捕获组编号排列的字节下标对。本文用一个键值文本解析场景说明如何映射整体匹配、命名捕获组、未匹配分支和 UTF-8 边界。134 收藏 -
Go 上传接口要限制请求体,应该在 Handler 入口用 http.MaxBytesReader 包住 r.Body,再用 errors.As 识别 *http.MaxBytesError 并返回 413。本文还区分 Content-Length 预检查与 multipart 的 maxMemory。134 收藏 -
Go 的 iter.Pull 把 push-style 迭代器变成 next/stop 拉取接口,但提前结束时必须调用 stop 让 yield 协程收尾。本文用资源清理、重复 stop 和测试替身说明它的生命周期与并发边界。133 收藏 -
Go HTTP 接口接收 JSON 时,应在 json.Decoder 读取前用 http.MaxBytesReader 限制请求体大小,并区分 MaxBytesError、JSON 语法错误、未知字段和尾部多余数据。本文比较不同限制方式,给出可直接改造的 Handler 示例与上线决策表。133 收藏 -
Go 的 time.Duration.Abs 可以把负持续时间转成正值,但对 math.MinInt64 有特殊处理:结果是 math.MaxInt64。本文从源码语义、正常调用和边界测试三个角度说明如何安全展示耗时。132 收藏 -
Go 计算大文件 SHA-256 时,不必先把文件读成 []byte。本文用 crypto/sha256.New、os.Open 和 io.Copy 边读取边累计哈希,并说明文件关闭、输出编码、空文件和重复读取的边界。132 收藏 -
filepath.WalkDir 会访问符号链接这一项,但不会自动进入它指向的目录。本文用 DirEntry、os.Stat 和错误回调拆开链接本身、目标信息、失效链接与权限错误的处理边界。132 收藏 -
Golang · Go教程 | 1星期前 | 标准库 · Go教程 · 工具开发 · 错误定位 · 语法分析 · Go 1.27 go/scanner Scanner.End token.Pos 语法诊断
Go 1.27 为 go/scanner.Scanner 增加 End 方法,返回最近一次扫描 token 之后的位置。本文从诊断范围偏移的排查现场出发,说明 Scan 返回的起点、End 的末端、token.File.Offset 的字节区间如何配合,以及 EOF、Unicode 和未扫描状态下的边界。131 收藏 -
使用 Go archive/zip 的 FileHeader.Modified 和 Writer.CreateHeader 设置 ZIP 条目的修改时间,并处理 UTC 转换与传统 ZIP 时间精度差异。131 收藏 -
Go 1.19 及以上项目通常优先使用 atomic.Int64;兼容旧版本或已有 *int64 接口时继续使用旧式原子函数。本文从 API 形状、计数器迁移、版本、对齐和复制约束说明如何选择。130 收藏 -
用 Go crypto/rand 读取固定长度随机字节时,区分 Reader 的短读语义、io.ReadFull 的完整读取保证与错误传播边界,并用可控测试替身复核实现。129 收藏 -
Go 1.27 为 go/types 增加 Hasher 与 HasherIgnoreTags。本文用结构体标签和 maphash 说明两套类型等价关系如何生成一致缓存键,以及碰撞、种子和并发边界。129 收藏 -
用 Go 的 bufio.Scanner 自定义 SplitFunc,按换行切出带 [source] 前缀的日志记录,正确处理 atEOF、格式错误和超长 token。129 收藏