Go语言技术文章
-
解释 RawBytes 的借用期限与切片共享,展示当前行复制和直接 Scan 到 []byte 的写法,并说明异步移交、NULL、Rows.Err 与关闭结果集的边界。424 收藏 -
Go 的 net.IPMask.Size 返回前导 1 的数量和掩码总位数。本文用 IPv4、IPv6、/0 与非连续掩码对照,说明怎样准确判断连续 CIDR 前缀,避免把合法零前缀误判为错误。424 收藏 -
使用 Go 的 net.Resolver.LookupMX 查询全部邮件交换记录,解释 MX.Host 与 MX.Pref,并处理超时、排序和部分结果错误。424 收藏 -
Go 1.23 引入 iter.Pull 后,调用方可以把 push 迭代器改成 next 读取,但停止时机和资源释放不能靠猜。本文用可运行示例拆解 next、stop、done 的边界,定位 goroutine 泄漏,并给出取消、回滚与告警检查办法。423 收藏 -
Go 的 template.FuncMap 适合注册纯函数,但闭包若持有可变共享状态,模板并发执行时仍会产生竞态。本文从注册、解析、执行三个边界拆解风险,并给出可验证的安全写法。423 收藏 -
Go 反射读取结构体标签时,Get 的空字符串并不等于“标签缺失”。本文用 StructTag.Lookup 区分缺失键、显式空值与格式错误,并给出可诊断的封装写法。423 收藏 -
说明 Go reflect.StructOf 适合的动态字段场景,演示如何用 StructField、JSON 标签和 reflect.New 创建可写运行时结构体,并梳理导出字段、嵌入方法与类型缓存边界。423 收藏 -
Go 标准库 maps.Clone 可以复制 map 的顶层键值结构,并保留 nil 输入的语义。本文用最小示例说明普通复制、nil 与空 map、浅复制边界、自定义 map 类型和旧环境替代写法。423 收藏 -
用互斥的 go:build 约束隔离 Go 的生产实现与测试替身,配合 go test -tags 和 go list 检查文件选择,避免测试代码误进入生产构建。423 收藏 -
讲清 Go time.FixedZone 的 name 与秒级 offset 语义,演示如何构造 UTC+08:00、转换已有时间并区分 FixedZone 与 LoadLocation。423 收藏 -
解释 Go 文件原子替换为什么仍会在异常重启后丢失,并给出文件 Sync、Rename 与父目录 Sync 的完整耐久写入顺序和可复用代码。423 收藏 -
Go 基准测试里的 ReportAllocs 不是全局开关。本文用 ResetTimer、b.N 和 b.Loop 拆开准备阶段与被测循环,说明怎样确认 allocs/op 和 B/op 只统计正确代码。423 收藏 -
Go sync.Once 延迟初始化需要共享同一实例,并保存资源对象与初始化错误。本文用只读名称表示例说明并发发布、失败不重试及资源更新和关闭的边界。423 收藏 -
Go 项目把 interface API 迁移到泛型时,不能只看代码是否编译。本文用共享测试表、最小泛型约束和并行适配层,比较旧接口与泛型实现的输出、错误、零值和边界行为,帮助你分阶段完成迁移并保持测试等价。423 收藏 -
用 embed.FS、fs.Sub 和 html/template.ParseFS 组织 Go 默认模板,说明包内构建边界、启动阶段解析和请求执行的错误处理方式。423 收藏