Go教程技术文章
-
Go reflect 中 ConvertibleTo、AssignableTo、CanConvert、CanSet 与接口断言职责不同。本文用命名类型、接口字段和动态值示例说明转换、赋值与断言的边界,帮助反射代码减少 panic。206 收藏 -
本文演示 Go base32.NewDecoder 如何配合 io.CopyBuffer 流式解码大文件,并补充编码一致性、大小限制、错误处理和临时文件提交。206 收藏 -
用 go/parser 生成 Go AST,再用 ast.Preorder 以迭代器形式完成深度优先前序遍历;同时比较 Inspect 与 PreorderStack 的控制边界,并处理解析错误、节点筛选和源文件位置。206 收藏 -
本文用 Go net/http ServeMux 组织方法、路径和命名通配符,说明路由优先级、PathValue 参数读取、冲突边界与旧版本兼容写法。205 收藏 -
Go PGO 的关键不是随便拿一份 CPU profile,而是让 profile 代表真实工作负载。本文从采集范围、统一采样窗口、多实例合并到 default.pgo 和 -pgo 构建,整理一套可以持续更新的准备方法。205 收藏 -
Go text/template 输出空字符串不一定是字段缺失。本文区分 map 缺键、空字符串和结构体零值,并用 missingkey=error、hasKey 与 index 给出可执行的排查和处理方式。204 收藏 -
Go 的 url.Values.Encode 会按 key 排序并完成 URL 编码,但不会替你制定完整的签名协议。本文说明重复参数、特殊字符和签名字段如何纳入同一份规范化字符串。204 收藏 -
Go text/template 的 missingkey 不是统一的必选项:default 保留兼容行为,zero 返回元素类型零值,error 让 Execute 立即失败。本文按模板用途给出选择方法和落地清单。204 收藏 -
Go 批量任务如果靠定时轮询检查状态,既浪费唤醒次数又难以处理关闭流程。本文用 sync.Cond 把状态检查、等待和批量唤醒组织起来,并说明 Signal、Broadcast 与退出条件的选择。204 收藏 -
Go netip.Prefix 表示一个 CIDR 网段,但 Addr 可能仍保留主机位。本文用 Masked 得到规范化起始地址,再按 IPv4 与 IPv6 的位数计算最后地址,说明无效前缀、单地址前缀和地址族边界。204 收藏 -
Go 里不要只按“随机数”三个字选包:模拟、洗牌和可复现实验用 math/rand/v2,令牌、密钥和验证码用 crypto/rand。本文把并发安全、独立源与测试注入边界放在同一张决策表里。203 收藏 -
用 Go 1.23 的 iter.Seq 把 cursor 分页查询包装成惰性遍历,说明 yield 返回值、提前停止、重复游标和错误边界;需要保留页码时再用 iter.Seq2 传递附加信息。203 收藏 -
os.File.Sync 适合放在关键文件写入、检查点和原子替换的持久化边界上。本文区分 Write、Sync、Close 与目录项同步,给出错误处理和同步频率的实用判断。203 收藏 -
Go encoding/csv 默认会检查每条记录的列数。不齐列数据要保留时,可将 FieldsPerRecord 设为 -1,再在 Read 循环中按表头长度标记、补齐并审计异常记录。203 收藏 -
Go 的 encoding/csv 可以把引号字段里的换行当作字段内容,而不是新记录。本文用 Reader.Read、FieldsPerRecord 和 ParseError 处理多行字段,并区分 EOF、字段数不一致与引号语法错误。203 收藏