Go语言技术文章
-
通过显式存在性判断处理Go fmt.Appendf可选字段,保留空串、零值和false,管理分隔符及返回切片,并说明文本格式与JSON编码的区别。303 收藏 -
Go errors.Join 适合把多个可选字段的校验错误合并成一个可检查的错误树。本文用请求补丁示例说明 nil、errors.Is、errors.As、输出顺序和不适用场景。387 收藏 -
说明Go types.Scope.Innermost的位置查询方法,用完整示例连接源码字节偏移、FileSet与Info.Scopes,并区分nil结果、当前层名称与可见对象查找。303 收藏 -
用 go/types 做静态分析时,Selection.Index 保存的是从接收类型到字段的索引链。本文用两层嵌入结构演示如何还原 Meta.Base.ID 路径,并说明指针、命名类型、FieldVal 与边界错误的处理方式。316 收藏 -
Go maphash.Hash.Clone 可以从已有输入的中间状态复制出独立的 hash.Cloner。本文说明如何保留共同前缀、分别追加后缀,理解 Clone 返回值、错误处理、版本要求与并发边界。452 收藏 -
Go database/sql.Rows 读取含 NULL 的多行结果时,不能把可空字段直接扫描到普通字符串或数字。本文用 sql.Null*、Scanner、any 和完整的 rows 生命周期示例,说明如何保留值与 Valid 状态,并处理动态列、提前退出和多结果集边界。279 收藏 -
Go crypto/subtle.ConstantTimeCopy 用 0/1 控制是否覆盖等长字节缓冲区。本文说明参数语义、固定长度准备、边界条件,以及它与 copy、ConstantTimeCompare 的区别。273 收藏 -
Go crypto/subtle.ConstantTimeLessOrEq 只适合比较非负且不超过 2^31-1 的 int。本文结合一个小型范围判断封装,说明它的 0/1 返回值、输入边界和与普通 <=、ConstantTimeCompare 的区别。442 收藏 -
Go crypto/sha3.NewSHAKE128 适合需要按调用场景决定摘要长度的任务。本文从 Write、Read、Reset 的状态顺序出发,说明如何读取指定长度的 SHAKE128 输出,以及为什么读取后不能继续写入。501 收藏 -
Go reflect.Value.CanFloat 用来判断反射值能否安全调用 Float。本文区分 float32、float64、整数和无效 Value,给出带错误返回的读取函数,并说明 Float 返回 float64 时的边界与反射性能取舍。198 收藏 -
用 Go crypto/sha3.New256 复用 SHA3-256 哈希对象,讲清 Write、Sum、Reset 的边界、批量摘要中的清理顺序,以及 sync.Pool 归还对象时怎样避免串状态。146 收藏 -
Go crypto/aes 的临时分配通常来自重复初始化、Seal/Open 每次从 nil 切片扩容以及热路径中的字符串转换。本文用 AES-GCM 说明如何复用 AEAD、目标缓冲区和 nonce 存储,并划清别名与 nonce 安全边界。402 收藏 -
Go crypto/aes 不会替业务配置自动处理可选字段:密钥始终必填,GCM 的 nonce 按模式决定是调用方提供还是由随机封装生成,AAD 可以为空但解密必须保持一致。本文用一个小型配置入口拆清缺省字段的判断、错误和适用边界。388 收藏 -
用%w保留Go crypto/aes初始化错误,通过errors.As识别KeySizeError,区分调用阶段,并设计不泄露密钥的内部诊断和对外提示。164 收藏 -
Golang · Go教程 | 3天前 | 标准库 · Go教程 · Go io.Reader io.EOF compress/gzip Multistream gzip.Reader io.ByteReader
Go gzip.Reader 默认会把连续 gzip 成员当作一个逻辑数据流。本文说明怎样用 Multistream(false) 固定当前成员边界,利用 io.ByteReader 保留尾部数据,并区分当前成员 EOF、下一个 gzip 成员和普通尾部。127 收藏