Go语言技术文章
-
Go 的 binary.AppendUvarint 会把 uint64 按每组 7 位追加为变长字节序列。本文用已有前缀、连续追加、容量复用和 Uvarint 解码示例说明怎么用,以及 10 字节上限、截断输入和有符号整数的边界。156 收藏 -
Go gob 的接口字段会携带动态具体类型名称,接收端必须预先知道该名称对应的本地类型。本文说明 Register、RegisterName、指针类型与跨进程注册表的正确用法。374 收藏 -
Go 1.22 起可用 AppendEncode 把 Base64 结果追加到现有切片。本文讲清容量预估、dst[:0] 复用、返回值接收与底层数组所有权边界。285 收藏 -
Go 的 csv.Reader 默认拒绝字段内裸双引号。开启 LazyQuotes 后,非引号字段可包含双引号,引号字段也可出现非成对双引号,但逗号、换行和字段数规则仍然生效。486 收藏 -
Go 的 Base32 无填充编码可通过 StdEncoding.WithPadding(base32.NoPadding) 创建。本文给出最小写法,并检查调用对象、解码规则、输出长度和流式关闭边界。473 收藏 -
binary.Varint 的第二个返回值小于零表示 64 位溢出,绝对值是已读取字节数。本文拆解三态返回、缓冲区推进、ReadVarint 选择与边界测试。187 收藏 -
Go 的 ascii85.NewDecoder 接收 io.Reader,会跨底层 Read 边界保留未完成编码组。本文用 io.MultiReader 连接分段输入,说明 EOF 收尾、<~ ~> 包装符、CorruptInputError、限流与生产验收方法。398 收藏 -
Go base64.DecodeString 返回 CorruptInputError 时,错误值就是需要排查的零基字节偏移。本文用 errors.As 提取位置,结合上下文、字母表、补位、UTF-8 和 Strict 模式,区分非法字符与输入截断。216 收藏 -
用一个最小 Go 项目演示如何通过 //go:embed 把模板编译进 embed.FS,再用 ReadFile 读取、template.Parse 解析并执行,补充路径规则、错误处理、ParseFS 取舍与测试方法。367 收藏 -
解释 Go //go:embed 为什么在目录递归时排除以点号或下划线开头的文件,比较目录名、当前层通配符与 all: 前缀的差异,并给出精确嵌入、结果检查和安全边界。483 收藏 -
介绍 Go 标准库 debug/elf.File.DynString 的正确用法:读取 DT_NEEDED、DT_SONAME、DT_RPATH、DT_RUNPATH,理解动态段与字符串表关系,并区分空结果、非法标签、损坏 ELF 和不可信输入。383 收藏 -
Go debug/dwarf.Reader.SkipChildren 只在不需要读取当前 Entry 后代时调用。本文用 Entry 树、Children 标记和 Tag 0 说明剪枝位置,并给出完整遍历与选择性遍历的判断表。197 收藏 -
Go 的 debug/buildinfo.ReadFile 可以离线读取指定二进制内嵌的工具链、主模块和依赖模块信息。本文给出完整示例,说明 Deps、Version、Sum、Replace 的读取方法及缺失边界。446 收藏 -
Go 的 BuildInfo.Settings 是按实际构建条件写入的稀疏键值列表,VCS 字段会因关闭 buildvcs、缺少仓库或工具、模块与仓库目录不匹配等情况而缺失。本文给出判断方法与容错读取代码。430 收藏 -
Golang · Go教程 | 1星期前 | Go教程 · database/sql · Go database/sql 动态查询 sql.Rows.ColumnTypes ColumnType DatabaseTypeName ScanType
Go 的 sql.Rows.ColumnTypes 可读取查询结果列的名称、数据库类型、扫描类型、长度、精度和可空性。本文给出完整示例,并比较 Columns、目录查询与动态值扫描的适用边界。122 收藏