Go教程技术文章
-
动态轮询任务需要调整周期时,活跃的 time.Ticker 直接调用 Reset;真正暂停后恢复则重新创建 ticker。本文结合控制消息说明 Stop、Reset 与 C 通道的生命周期边界,以及如何避免重复 ticker 和错误等待。392 收藏 -
Go 1.27 扩展了泛型函数的上下文推导:当赋值目标是明确的非泛型函数类型时,可以从目标签名推导类型参数。本文用函数赋值、切片字面量、类型转换和通道发送说明可推导边界。392 收藏 -
Go bytes.Runes 会把 UTF-8 字节切片解释为 Unicode 符文并返回 []rune。本文从基础转换、长度单位、非法 UTF-8 和字符边界几个方面说明如何安全使用。392 收藏 -
time.Duration 以 int64 纳秒保存,和整数相乘时不会自动报告溢出。本文从边界值、四种符号组合和 MinInt64 特例出发,给出乘法前检查并返回 overflow 标记的安全写法。392 收藏 -
用 Go mime/multipart.Reader.NextPart 逐段读取 multipart 表单,通过 FormName 和 FileName 区分普通字段与文件字段,并正确处理 io.EOF、读取边界和常见误区。392 收藏 -
Go 1.22 改变了 range 循环变量的作用域。本文用 goroutine 闭包示例说明旧写法为何会读到同一个值、go.mod 如何决定语义,以及升级后怎样验证和清理多余代码。391 收藏 -
线上 Go 接口偶发超时,通常不是把超时时间调大就能解决。本文用一个订单查询场景演示如何沿 context 从 Handler 传到下游调用,结合日志和取消信号定位未结束的请求,并给出回滚与告警检查方法。391 收藏 -
reflect.VisibleFields 可以按 Go 的字段可见性规则枚举结构体字段,连同嵌入字段也能得到稳定的 Index 路径。本文用一个审计结构体示例说明如何读取字段、区分匿名字段和未导出字段,并处理重名与空结果边界。391 收藏 -
Go 解析 JSON 大整数时,map[string]any 默认会把数字放入 float64,可能改写末尾精度。本文比较结构体整数、json.Decoder.UseNumber 和字符串三种方案,帮助你按数据结构与运算需求选择正确做法。391 收藏 -
用 Go maps.Copy 合并默认配置和覆盖配置,明确 dst/src 的覆盖方向,处理 nil 目标 map,并说明嵌套切片等值的浅复制边界。391 收藏 -
Go net/netip 比较 IPv4 与 IPv4-mapped IPv6 时,应先用 Unmap 统一表示,再按 Addr 或 AddrPort 选择等值判断;本文说明 Is4、Is6、Is4In6、Compare 与端口边界。391 收藏 -
用 Go atomic.Int64.Add 的新值返回语义封装并发序号生成器,并说明顺序、溢出、复制和跨进程使用边界。391 收藏 -
Golang · Go教程 | 3星期前 | 并发 · Go教程 · trace.NewTask go tool trace Go runtime/trace 执行跟踪 trace.WithRegion
Go runtime/trace 不只是记录运行时事件,还能用 task、region 和 Log 标记一次跨 goroutine 的业务操作。本文从排查现场出发,说明如何把任务上下文传入 goroutine、如何标记区间,以及如何避免结束时机和标记粒度失控。391 收藏 -
用 Go archive/tar 和 filepath.WalkDir 打包目录,讲清 FileInfoHeader 保留文件模式、相对路径、符号链接与关闭顺序。391 收藏 -
用自建 x509.CertPool 配置 VerifyOptions.Roots,只信任指定根证书;同时区分 Intermediates、DNSName 和 KeyUsages,避免把系统根或中间证书误当成信任边界。391 收藏