Go教程技术文章
-
Go JSON API 客户端重试不能只靠循环。本文用 net/http、context 和 JSON 字节重建请求,划分网络错误、429/5xx、4xx 与副作用请求的边界,并限制尝试次数、总超时和退避时间。345 收藏 -
Go 的 template.Clone 会复制基础模板及其关联模板命名空间,随后在副本中重新定义 block,便能生成互不污染的模板变体。本文用通知模板小项目演示默认块、局部覆盖、执行与测试。148 收藏 -
Go text/template 的 FuncMap 函数可以通过第二个 error 返回值中止 Execute。本文用一个校验函数说明错误传播、ExecError 解包、部分输出和生产边界。151 收藏 -
Go 1.24 起 text/template 可直接 range iter.Seq2。本文用 slices.All 演示两个模板变量的绑定方式,并说明空序列、单变量语义、顺序和兼容处理。416 收藏 -
SetConnMaxIdleTime 用来限制连接在池中连续空闲的最长时间,过期连接可能由清理器或复用前检查惰性关闭。它应与 MaxIdle、MaxOpen 和 MaxLifetime 配合,并通过 DB.Stats 观察淘汰计数。271 收藏 -
sql.Named 会创建不带符号前缀的 NamedArg,database/sql 再将名称、序号和值交给数据库驱动。命名占位符是否可用、查询中的符号写法以及值转换规则都由具体驱动决定。290 收藏 -
Go 1.22 引入的 sql.Null[T] 可以把 NULL 与自定义标量类型放在同一个扫描目标中。本文用 OrderState 和订单编码示例说明类型定义、Scan 调用、Valid 判断,以及 driver.Value 和旧版本兼容边界。415 收藏 -
sync.Pool 在池空时只有 New 非 nil 才会创建默认对象。本文用 bytes.Buffer 说明正确初始化、typed nil 陷阱、借用归还封装、状态重置和测试边界。466 收藏 -
Go 1.23 起,sync.Map.Clear 可直接删除并发映射中的全部条目,清空后仍能继续 Store 和 Load。本文通过可重置缓存示例说明基本用法、并发写入边界、旧版本兼容方案,以及需要严格换代时的原子指针切换设计。326 收藏 -
sync.OnceFunc 包装的函数如果首次执行 panic,被包装函数不会重试,但包装函数之后每次被调用都会使用同一个 panic 值再次 panic。本文给出最小示例、与 sync.Once.Do 的差异,以及线上恢复、失败缓存和重试设计建议。377 收藏 -
Go reflect.VisibleFields 会按 FieldByName 的可见性处理嵌入字段:浅层同名字段覆盖深层字段,同层同名字段互相抵消。本文用结构体示例说明冲突判断、StructField.Index 读取路径和 nil 嵌入指针边界。332 收藏 -
Go 1.23 为 reflect.Value 增加了 Seq2,可把 map 统一为 key/value 序列,也能遍历数组、切片、字符串和双值迭代函数。本文从一次遗漏 map 值的故障出发,说明 CanSeq2 判断、各类型双值语义和提前停止边界。469 收藏 -
Go 1.22 新增 reflect.TypeFor[T](),可以在没有现成值时直接取得泛型参数 T 对应的 reflect.Type。本文通过最小示例、接口类型对比和泛型注册表说明 TypeFor 与 TypeOf 的区别及使用边界。343 收藏 -
Go time.Duration.Abs 遇到 math.MinInt64 时会返回 math.MaxInt64。本文解释 int64 纳秒范围、唯一不对称边界,以及超时和重试场景下的业务上限检查方法。427 收藏 -
Golang · Go教程 | 2星期前 | go · 时区 · 时间处理 · 本地时间 time.LoadLocation 时区解析 Go time.ParseInLocation Asia/Shanghai
本文解释 Go 的 time.ParseInLocation 如何把不带时区的本地墙上时间按指定 Location 解析,比较 time.Parse 与 Time.In,并说明 IANA 时区加载、RFC3339、夏令时边界和 UTC 存储做法。170 收藏