Go语言技术文章
-
使用 go/types 做 Go 静态分析时,Info.Types 只能回答表达式类型。本文用原创示例说明如何初始化 Info.Selections,找到嵌入字段最终对应的 Obj,并用 Index、Recv、Indirect 解释选择路径。452 收藏 -
Go jsontext Decoder 的 SkipValue 适合在流式读取 JSON 时跳过不需要处理的大对象、数组或标量,避免 ReadValue 为整个值保留内存。本文从字段分支、嵌套边界和错误处理说明如何使用。276 收藏 -
Go 集成 cel-go 时,int 与 double 混合表达式可能在 Compile 阶段失败。本文按类型检查、算术运算、跨类型比较和显式转换拆开排查,给出可落地的修复选择。108 收藏 -
本文用 Go net/http 演示 Cookie.Partitioned 的设置方式,说明它与 Secure、SameSite=None、Path 的关系,以及 Go 版本兼容和响应头排查边界。477 收藏 -
Go crypto/mldsa 可以用 Options.Context 区分同一把密钥下的不同业务签名。本文从业务串域的故障现象切入,说明 Context 的长度边界、签名与验签必须保持一致的原因,以及如何用版本化上下文避免跨业务误验签。500 收藏 -
Go humanize 的 BigComma 可以把 math/big.Int 转成带千位分隔符的十进制文本。本文从超出 int64 的字符串解析开始,说明正负数、零值、解析错误和 BigCommaf 的适用边界。319 收藏 -
Go filepath.VolumeName 用于提取路径开头的卷名:Windows 盘符路径返回 C:,UNC 共享路径返回 \\host\share,其他平台返回空字符串。本文用跨平台示例拆解返回边界,并说明它与绝对路径判断、路径清理和安全校验的区别。236 收藏 -
Go 1.24 引入的 os.Root 可以把文件操作限制在指定目录内。本文用 Root.Stat 获取 FileInfo,判断普通文件、目录和符号链接,并说明相对路径、越界路径、错误处理以及 Stat 与 Lstat 的区别。188 收藏 -
Go 1.27 标准库 uuid.Parse 可以识别带连字符、花括号、URN 和无分隔符的 UUID 文本。本文按输入边界、错误处理和类型化后续操作拆解调用方式,帮助接口与配置代码避免误用 MustParse。322 收藏 -
Go 的 multipart.Writer 默认使用随机边界。本文围绕 SetBoundary 讲清合法边界、调用时机、Content-Type 同步和 Close 收尾,给出可直接改造的上传请求示例。294 收藏 -
Go 的 os.Readlink 返回的是符号链接保存的目标字符串。本文用 filepath.IsAbs 判断相对或绝对目标,并说明相对目标为什么要以链接所在目录为基准解释。363 收藏 -
Go netip.Addr.AppendBinary 适合把 IPv4 或 IPv6 地址追加到已有字节切片。本文说明返回切片、IPv4/IPv6 长度、零值错误和协议字段边界。415 收藏 -
bytes.Buffer.Available 返回的是底层缓冲区尚未使用的容量,不是当前可读数据长度。本文结合 Len、Cap、Grow 和 AvailableBuffer,说明如何判断追加空间并安全复用缓冲区。293 收藏 -
Go 1.27 把 go fix 中的 waitgroup analyzer 改名为 waitgroupgo。本文区分命令入口与分析器名称,说明如何用 go tool fix help 和 go fix -diff 确认参数,并判断哪些 WaitGroup 写法适合现代化、哪些场景需要人工复核。400 收藏 -
Go go-ical 的 TEXT 属性不能把逗号、分号、反斜杠和换行直接拼进线格式。本文说明 SetText、SetTextList、Text、TextList 的选择,以及业务换行、列表分隔和物理折行的边界。212 收藏