Go教程技术文章
-
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 map 再写入缓存时,真正容易出错的是边界校验、键的稳定性和过期清理。本文用一个商品筛选缓存场景,串起输入校验、键生成、并发读写与回收验证。343 收藏 -
Go encoding/xml 解析重复的同名节点时用切片接收,遇到多层 XML 则用结构体嵌套或 a>b 标签路径表达层级。本文用一个订单 XML 说明标签映射、列表顺序、未知节点和最小验证。343 收藏 -
Go TLS 客户端使用 x509.NewCertPool 和 AppendCertsFromPEM 从内存加载自定义 CA,并通过 tls.Config.RootCAs 只按指定证书池验证服务器。343 收藏 -
Go net/url 的 Opaque URL 不把主体数据放在 Path 或 Host,而是放进 URL.Opaque。本文区分 scheme:opaque 与层级 URL,并说明 String、URL.RequestURI 和服务端 RequestURI 分别该在什么场景读取。343 收藏 -
go test -race 出错时,先确认是运行时竞态、普通测试失败还是平台不支持,再沿着 Read by、Previous write 和 goroutine 创建栈定位共享状态,修复后用 -count=1 复查。343 收藏 -
Go 的 math/big.Rat.SetString 会把合法十进制解析为精确有理数,但显示精度与内部精度不是一回事。本文用 RatString、Denom、FloatPrec 和 FloatString 分清四种检查方式。343 收藏 -
Go 1.22 新增 reflect.TypeFor[T](),可以在没有现成值时直接取得泛型参数 T 对应的 reflect.Type。本文通过最小示例、接口类型对比和泛型注册表说明 TypeFor 与 TypeOf 的区别及使用边界。343 收藏 -
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 收藏