Go教程技术文章
-
保存 ReaderAt、起始偏移和长度,为每次尝试重建 SectionReader。结合完整示例说明游标复位、读取不足、目标重试、源版本与 HTTP 响应边界。178 收藏 -
Go context.WithCancelCause 适合把批处理中的首个取消原因沿 Context 传给调用方。本文区分 Err 与 Cause,给出批次级 worker 示例,并说明如何用稳定错误和一次派生上下文减少额外结果包装与分配。178 收藏 -
用 Go testing 的 ns/op、B/op、allocs/op 识别分配热点,再用 AllocsPerRun 把测量范围缩到一个明确的函数调用。177 收藏 -
用Go bytes.CutSuffix判断并移除一次固定字节后缀,区分空主体与未匹配,说明空后缀、重复标记和共享切片的处理方法,并给出返回独立副本的业务函数。177 收藏 -
本文围绕 Go embed.FS 讲清静态资源目录、//go:embed 包级声明、隐藏文件规则,以及如何通过 http.FS、StripPrefix 和 FileServer 接入 HTTP 服务。177 收藏 -
strconv.UnquoteChar 每次只解析输入开头的一个字符或转义序列,同时返回 rune、multibyte、剩余 tail 和错误。本文用字符解析器的场景说明 quote 参数、转义家族、尾串循环与错误边界。177 收藏 -
Go encoding/hex.NewDecoder 适合把十六进制字符流转换为字节流。本文说明分块读取、奇数长度输入、非法字符和 io.ErrUnexpectedEOF 的区别,帮助你正确收尾而不是把不完整数据误判成正常结束。177 收藏 -
Go 的 slices.BinarySearchFunc 在未命中时仍会返回有序边界。本文用自定义比较器说明 n、found 的含义,以及如何把未命中的元素插入正确位置,避免排序规则不一致造成错误下标。177 收藏 -
Go linkname 会绕过未导出声明的封装。本文从需求、符号签名、内存布局、Go 版本、链接器、目标架构和回滚路径几个方面说明使用前必须明确的边界。177 收藏 -
解释 net/http ServeMux 中 /docs、/docs/ 和 /docs/{$} 的匹配边界,说明自动补尾斜杠的原因,并给出精确路径与子树路径的注册选择。177 收藏 -
regexp.FindAllStringIndex 返回的是原始 Go 字符串的字节偏移而不是 Rune 下标。本文用中文文本说明如何直接切片匹配结果、按需换算字符位置,并处理空匹配、原文变化和自动化流水线中的边界门禁。177 收藏 -
Go SubexpIndex 返回命名捕获组序号,需要配合 FindStringSubmatchIndex 定位字节范围。本文用完整示例区分名称不存在、整体未匹配、可选分组未参与和有效空串,说明中文索引与重复名称的处理。177 收藏 -
Go io.ReadAll 配合 LimitReader 时,应读取上限加一字节识别超限。本文说明 EOF 语义、受限读取封装、错误优先级及资源关闭责任。176 收藏 -
Go 字符串切片可能继续关联原始大字符串,导致只保留一小段文本时仍占住更大的底层存储。本文说明 strings.Clone 的适用边界、生命周期放置位置、空字符串行为和复制成本,帮助你只在有内存保留证据时做独立复制。176 收藏 -
Go 1.27 默认启用小对象专用分配器,针对部分小于 80 字节的分配降低调用成本。本文拆开 GOEXPERIMENT=nosizespecializedmalloc 的构建期语义、runtime 条件和 A/B 对照用法,避免把它误当成运行时开关。176 收藏