Go语言技术文章
-
在 Go 服务中把外部 DTO 隔离在防腐层,能把供应商字段变化挡在接口边界外;本文用订单状态同步示例说明映射、校验、版本兼容与测试验收如何落地。406 收藏 -
用 bytes.Clone 复制 []byte 时,重点不是语法,而是确认结果与原切片不共享可写元素,并验证空输入的 nil 边界。406 收藏 -
用同一份 Go 示例对比 len、utf8.RuneCountInString 和逐 rune 遍历,验证中文、emoji 与非法 UTF-8 的计数差异,并给出按字符截断时不切断编码的方法。406 收藏 -
slices.Clone 对二维切片只做浅拷贝:外层容器独立,但内层切片仍可能共享元素数组。本文用反例说明原因,并给出保留 nil 行语义的逐行深拷贝写法。406 收藏 -
Go 切片的二索引写法可能保留底层数组尾部容量,append 会意外覆盖相邻数据。本文用 full slice expression 限制 cap,说明三索引规则、扩容边界和常见误区。406 收藏 -
Golang · Go教程 | 1个月前 | channel · 定时任务 · Go教程 · Go time.Ticker动态调整周期 Go Ticker Reset使用方法 Go定时任务保留状态 Go周期任务动态配置 Go ticker慢任务处理
Go time.Ticker可以通过Reset切换周期,但它只负责发送tick,不负责保存业务游标。本文用单goroutine事件循环拆开周期更新、状态保存、慢任务与退出清理,给出动态调度的可复用实现方式。406 收藏 -
Go slog 字段不该全部放在调用处,也不该全部由 Handler 猜测。事件事实留在调用处,稳定作用域字段用 Logger.With 绑定,Handler 只补 context 或运行环境可统一推导的横切字段。本文给出字段归属表、包装 Handler、降级规则和性能注意。406 收藏 -
maps.Collect 可把 iter.Seq2 的键值对收集到一个新 map 中;重复键会按迭代器产生顺序由后值覆盖前值。本文用记录切片演示重建去重字典,并给出首值保留、版本优先和冲突检测写法。406 收藏 -
Go WithoutCancel 保留父级值查询,却不继承取消、deadline 与取消原因。本文解释 nil Done 的阻塞行为,用完整示例重新建立独立工作预算,并说明值引用、资源和权限的边界。406 收藏 -
Go text/template 使用自定义函数时,应先通过 Funcs 注册 FuncMap,再调用 ParseFS 解析引用这些函数的模板。本文结合 embed.FS 说明调用顺序、函数签名、解析错误与执行错误的区别。406 收藏 -
Go json.Decoder 没有单次读取字节数设置。通过 LimitReader 的加一字节预算区分超限,检查尾随内容,并结合 MaxBytesReader 返回明确的HTTP错误。406 收藏 -
Go crypto/mlkem 用 ML-KEM-768 生成密钥、封装共享秘密与解封装密文。通过原创函数示例区分公开材料和秘密材料,解释错误处理、返回顺序及身份认证边界。406 收藏 -
Go stringsseq 适合把只遍历一次的 strings.Split 或 strings.Fields 迁移为 SplitSeq、FieldsSeq,减少临时切片分配。本文说明适用边界、go fix 预览方法、版本要求以及索引、重复遍历和语义回归检查。406 收藏 -
复用同一个结果结构体调用 Go mapstructure 解码时,未出现在新输入中的字段可能继续保留。本文解释默认合并行为,并给出 ZeroFields、重新创建结果对象和 Metadata 的选择方法。406 收藏 -
Go 的 http.Transport.HTTP2 用于配置 HTTP/2 连接的高级参数,但它不负责选择协议。本文区分 Protocols 与 HTTP2Config,说明客户端可用字段、零值语义和服务端专属配置。406 收藏