Go教程技术文章
-
text/scanner.Scanner.IsIdentRune 通过字符和位置回调决定一个标识符能由哪些 rune 组成。本文从默认规则出发,说明如何用 i 区分首字符和后续字符,并处理空白、TokenText 与 Scanner 封装边界。345 收藏 -
Go 的 http.Request.UserAgent 会读取请求中的 User-Agent 字段。本文说明空值处理、日志记录和轻量归类,并划清它与认证、授权和设备识别的边界。345 收藏 -
说明 Go runtime.AddCleanup 的输入与引用边界,通过独立清理状态、显式 Close 和幂等释放示例,解释 nil、闭包反向引用、KeepAlive、Stop 及不保证回调时机等问题,并给出计数与测量方法。345 收藏 -
用请求级 context 派生查询超时,把它传给 database/sql 的 QueryContext,并在取消、超时和驱动错误之间做出清晰判断,同时保证结果集关闭和连接池资源回收。344 收藏 -
Go path.Dir 适合处理 URL、对象存储键等正斜杠分隔路径。本文说明普通路径、末尾斜杠、根路径和空路径的返回边界,并区分 path.Dir 与 filepath.Dir 的生产使用场景。344 收藏 -
用 go-colorful 的 Hex 和 Lab 方法,把 #rrggbb 或 #rgb 十六进制颜色转换成 CIE L*a*b* 坐标,并说明错误处理、D65 参考白和后续颜色比较的注意事项。344 收藏 -
用 Go testing.F.Add 为模糊测试准备可重复的边界输入,本文给出一个可复用的最小示例,并说明 Fuzz 回调、运行命令、失败输入和回归测试之间的边界。344 收藏 -
Go database/sql 的 Scanner 接收到的 []byte 可能由驱动暂时拥有,下一次 Scan 后就不再适合长期引用。本文区分 *[]byte、sql.RawBytes、interface{} 和自定义 Scanner 的复制边界。343 收藏 -
Go net.IP.IsPrivate 可以按 RFC 1918 和 RFC 4193 判断 IPv4、IPv6 私有地址,但它不是安全属性。本文用 net.ParseIP、对照表和边界说明讲清输入、返回值与使用位置。343 收藏 -
用 Go encoding/base64.WithPadding 为协议设置自定义填充字符,区分标准填充、NoPadding 与非法参数,并说明编解码双方如何保持同一约定。343 收藏 -
说明 O_TRUNC 打开时截断与 Close 释放句柄的不同职责,给出保留写入、关闭错误的覆盖写函数,并解释直接覆盖、持久化与完整替换的取舍。343 收藏 -
Go netip.Addr.IsGlobalUnicast 用来判断地址是否属于全局单播语义,但它不等于公网可达或业务授权。本文从 ParseAddr 开始,结合私有地址、唯一本地地址、链路本地地址、组播和零值样例,给出可复用的分类函数与边界清单。343 收藏 -
Go io.MultiWriter 按顺序写入多个目标,遇到错误会立即停止。本文用失败 Writer 说明 n、err、短写和未执行目标的边界,并给出多目标尽力写入时的补偿方案。342 收藏 -
Go 使用 slices.Compact 原地合并相邻重复元素时,应接住返回切片并停止使用旧长度视图。本文说明相邻去重、共享底层数组与容量的区别,梳理 Go 1.22 尾部清零变化及保留输入的写法。342 收藏 -
Go 1.27 新增 crypto/mldsa,可用 MLDSA44、MLDSA65 或 MLDSA87 生成 ML-DSA 私钥。本文给出密钥生成、公钥导出、seed 恢复以及带 context 的签名验证写法,并说明参数尺寸和 FIPS 140-3 边界。342 收藏