Go教程技术文章
-
go/token 把源文件位置压缩成 Pos,真正输出错误时还要经过 FileSet.PositionFor。本文用多文件和 //line 场景说明 adjusted、文件偏移与诊断文本如何对应,并给出可复现的核对方式。367 收藏 -
Go 泛型代码需要把类型交给反射注册表时,reflect.TypeFor 可以直接取得类型描述;再配合 AssignableTo 校验注册边界,避免用空值和类型断言绕一圈。291 收藏 -
用 Go io.Copy 处理上传、代理和文件转存时,先限制输入边界,再利用 ReaderFrom 的快路径,最后用可复现基准确认吞吐与内存变化。409 收藏 -
Go 的 regexp.Expand 和 ExpandString 可以把正则捕获结果写入模板。本文从命名捕获组、模板边界和字节切片复用出发,给出可验收的替换写法,并说明空捕获组与并发使用时的注意点。402 收藏 -
用 Go net/url 的 URL.JoinPath 拼接接口路径,厘清多斜杠、./、../ 与 PathEscape 的边界,并通过可运行示例验收最终请求地址。160 收藏 -
Golang · Go教程 | 1星期前 | 依赖管理 · 调试 · Go教程 · 工程实践 · 构建信息 · Go 依赖版本 debug.BuildInfo debug/buildinfo 发布验收
线上只拿到一个 Go 二进制时,debug.BuildInfo 可以帮助你还原构建工具链、主模块、依赖模块与 VCS 设置。本文用 ReadFile 和 ReadBuildInfo 组成一套发布验收流程,并说明模块模式、裁剪信息与脏工作区的边界。200 收藏 -
用 Go regexp.Regexp.FindReaderIndex 在 io.RuneReader 上定位流式文本匹配,解释返回值为何是字节区间、UTF-8 字符如何换算,以及为什么方法可能继续向后读取。120 收藏 -
用 base64.Encoding.Strict 对比普通解码,验证末尾填充位、CorruptInputError 和 DecodeString 的错误边界,给出可复现的 Go 示例。252 收藏 -
接口收到一段无法解析的 JSON 时,json.Decoder.InputOffset 可以提供稳定的字节位置。本文用一个请求体校验器串起 Decode、InputOffset、错误截取和边界保护。344 收藏 -
用 Go runtime/metrics 读取 Float64Histogram,理解 Buckets 与 Counts 的对应关系,并用快照估算延迟分布的中位数和高分位边界。197 收藏 -
用 Go io.ReadFull 读取固定长度协议,区分 io.EOF 与 io.ErrUnexpectedEOF,并根据 n 和 err 做可靠的缓冲区验收。374 收藏 -
用 Go debug/buildinfo.ReadFile 读取已构建二进制中的主模块、依赖版本与版本控制信息,配合发布校验避免拿错构建产物。438 收藏 -
Go 的字符串按字节保存,同一个可见字符可能有预组合和组合字符两种 UTF-8 表示。本文用 golang.org/x/text/unicode/norm 判断 NFC、统一输入,并解释规范化前后的字节长度边界。263 收藏 -
Go 的 log/slog 可以把日志级别集中交给 HandlerOptions 管理,再用 LevelVar 在运行时切换,而 ReplaceAttr 适合统一字段格式。本文用一条可运行的配置链说明三者的职责边界、切换时机与验收方法。310 收藏 -
go/types.Info.FileVersions 可以告诉静态分析工具每个 ast.File 使用的 Go 语言版本。本文用一组可运行的类型检查代码说明文件版本、Config.GoVersion、Package.GoVersion 的关系,并处理版本缺失、类型错误和未来版本等边界。440 收藏