Go教程技术文章
-
Go reflect.Value.FieldByIndex 接收 StructField.Index 这样的字段路径,可读取嵌套或匿名嵌入结构体中的目标字段;遇到可能为空的指针时,应使用 FieldByIndexErr 获取可处理的错误。458 收藏 -
Go 的 TLSHandshakeTimeout 只负责 HTTPS 客户端 TLS 握手阶段的等待时间。本文用一个自定义 Transport 拆开连接、握手、响应头和响应体的超时边界,并说明如何根据错误现象选择排查方向。194 收藏 -
Go 标准库 net/netip 可以先用 ParsePrefix 解析 CIDR,再调用 Prefix.Contains 判断 IP 是否属于指定网段。本文给出 IPv4、IPv6、地址族不匹配、IPv6 zone 和前缀规范化的实用边界。442 收藏 -
Go 1.26 支持用 new(表达式) 创建带初始值的指针。以重试配置为例,讲清语言版本、默认类型、nil 与零值,以及 new(变量) 和取地址的区别。338 收藏 -
Go 1.26 放开了泛型类型在参数列表中的自引用约束。本文用 Adder[A Adder[A]] 和 Score 小项目说明如何表达同类型输入输出、判断方法签名边界,并区分类型约束递归与递归数据结构。219 收藏 -
Go 1.26 的 go fix 支持 //go:fix inline,可把旧函数、常量或类型别名迁移到新 API。本文从薄包装、diff 预览、参数副作用、defer 与测试边界说明如何准备规则。417 收藏 -
从定义方是否知情、目标是否属于标准库内部、是否依赖未导出契约三项信号判断 Go linkname 的迁移优先级,并给出 handshake、构建、符号和行为回归方案。420 收藏 -
Go go mod edit 一次只处理一个 go.mod 文件。本文用 find 和循环批量修改模块路径,并说明 -print、-json、源码 import、replace 与 v2 主版本后缀的边界。262 收藏 -
用结算应用与计价库两个模块说明 go work init 和 go work use 的加入方法,区分目录路径与导入路径,并解释递归收集、成员移除、GOWORK 以及独立发布边界。288 收藏 -
go env -changed 只显示 Go 工具链有效值与默认值不同的设置。本文解释它的比较边界、空结果含义,并配合 go env -json、-w、-u 快速定位和清理自定义配置。191 收藏 -
用 go list -m -json 导出 Go 模块的路径、版本、目录、go.mod、替换关系和更新信息,说明连续 JSON 解析及主模块、构建列表、版本查询的边界。451 收藏 -
用 go tool pprof 的 sample_index 切换内存 profile 的采样值,分清 inuse_space、inuse_objects、alloc_space 与 alloc_objects,并说明交互命令、命令行参数和索引边界。403 收藏 -
Go 随机测试失败后,保存 shuffle 种子并重放原测试集合。用双测试小项目解释共享状态与独立实例修复,补充 CI 日志记录和并发复现边界。174 收藏 -
Go 的 iotest.TimeoutReader 专门用于测试 Reader 的超时分支:有限数据读完后,第二次无数据读取返回 iotest.ErrTimeout,后续读取又恢复成功。本文用一个小测试说明调用顺序、断言方式和常见边界。292 收藏 -
Go testing.B.Loop 会把循环前后的初始化和清理排除在计时之外,但不会替你保证循环体的计算结果仍然可观察。本文说明如何避免无副作用调用被编译器优化掉,并梳理 b.Loop 的语法与适用边界。266 收藏