Go教程技术文章
-
bufio.Writer.Reset 可以复用内部缓冲区并切换下游 io.Writer,但会丢弃未 Flush 的数据并清除错误状态。本文用一个批量写入场景说明 Flush、Reset、资源关闭和并发边界。490 收藏 -
Go text/template 可通过 FuncMap 注册返回值与 error 的函数。本文结合状态报告示例说明注册顺序、Execute 错误链、缓冲输出和兼容处理,避免把半成品报告交付给调用方。490 收藏 -
Go math/bits.OnesCount64 接收 uint64 并返回其中 1 bit 的数量。本文用位掩码示例说明调用方式、返回值和零值、全 1 值及输入类型选择。488 收藏 -
围绕 io/fs.ValidPath 说明 FS.Open 名称的相对路径规则、根路径语义、斜杠边界和自定义文件系统的入口检查方式。488 收藏 -
Go 交叉编译时,纯 Go 项目可以通过 CGO_ENABLED=0 关闭 cgo,再用 GOOS 和 GOARCH 选择目标平台。本文从构建命令、go env 检查、cgo 构建约束和纯 Go 替代实现四个方面说明可执行做法与依赖边界。487 收藏 -
Go 使用 golang.org/x/text/encoding/simplifiedchinese 处理 GB18030 四字节字符,关键是用 GB18030 的 Decoder 与 Encoder 在 UTF-8 和旧编码字节之间转换,并区分解码替换字符与编码不可表示错误。487 收藏 -
Go fs.WalkDir 传给回调的是逻辑路径和目录项,按文件名筛选时应先用 path.Base 取出最后一段,再用 path.Match 做完整匹配,并分别处理模式错误、访问错误和目录剪枝。486 收藏 -
httputil.DumpResponse 没有响应头过滤参数。本文用复制 Response、复制 Header、大小写不敏感删除和 body=false 的方式生成安全调试摘要,并说明需要正文时怎样避免误伤原响应。486 收藏 -
Go 按分钟对齐时间的最小写法是 t.Truncate(time.Minute)。本文说明它的绝对时间语义、返回值和时区边界,并比较 Truncate、Round 与 time.Date 的适用场景。486 收藏 -
Go 的 fs.Sub 可以把一个 fs.FS 中的子目录挂载成新的文件系统。本文用 embed.FS 说明目录参数、相对路径、错误处理,以及如何把子 FS 接入 fs.ReadFile 和模板加载。486 收藏 -
Go 的 os.Root 可以把文件访问限制在一个目录树内。本文从 os.OpenRoot 和 Root.Open 的最小写法出发,说明 ..、符号链接、Root.FS 与 OpenInRoot 的边界,避免把路径清理误当成安全限制。486 收藏 -
先打开一个可复用的 os.Root,再用相对路径调用 Root.OpenFile;文章说明返回文件句柄的使用方式,以及 Root 与 *os.File 的关闭边界。486 收藏 -
Go strings.FieldsSeq 返回按 Unicode 空白分隔的字符串迭代器。本文用最小示例说明怎样逐个读取字段、提前停止和处理空输入,并解释它与 strings.Fields 的版本与内存边界。486 收藏 -
Go Fuzz 可以把解析器的正常样例、空输入和历史失败语料放进种子集合,再用覆盖率引导生成新的字节输入。本文从 FuzzXxx、f.Add 和 f.Fuzz 写起,说明如何检查解析结果、运行限时模糊测试,并把失败输入保留为回归语料。485 收藏 -
Go encoding/csv 的 Write 会先把记录写入内部缓冲,Flush 才把缓冲交给底层 io.Writer。本文说明 Writer.Error 为什么必须在 Flush 后检查,怎样区分 Write 的即时错误、Flush 的延迟错误和 WriteAll 的返回值。485 收藏