Go教程技术文章
-
说明 Go interface 携带 nil 指针时为什么仍不等于 nil,并用错误返回边界、类型断言和三种状态测试避免 typed nil 误判。287 收藏 -
用一个父子进程示例说明 Go os/exec 的 ExtraFiles 如何把文件传到固定的 3+i 描述符,覆盖子进程读取、关闭时机、EOF 排查与 Windows 不支持边界。287 收藏 -
Go 1.24 的 os.Root 把文件操作约束在指定目录树中,可阻止绝对路径、.. 越界和指向根外的符号链接。本文用可运行示例说明 OpenRoot、MkdirAll、OpenFile 的正确组合及权限、性能和平台边界。287 收藏 -
Go 1.27 为 go doc 增加 -ex,并支持 package@version 查询。本文用 bytes.ExampleBuffer 演示如何找到可执行示例,说明模块版本边界、输出范围和旧工具链的兼容检查。286 收藏 -
slices.DeleteFunc 适合按条件批量删除切片元素,但回调遍历的是原切片语义,不能在回调里再改同一个切片。本文用可运行示例拆开保序删除、索引变化和尾部清零带来的内存边界,并给出何时改用一次性筛选。285 收藏 -
用 Go 标准库为内部 HTTP 工具增加 Basic 认证,讲清服务端 BasicAuth、客户端 SetBasicAuth、401 挑战、HTTPS 和凭据校验边界。285 收藏 -
Go 的 CheckRedirect 返回自定义错误时,Response 可能仍非空但 Body 已关闭;如果要读取最后一次响应,应返回 http.ErrUseLastResponse,并在调用方负责读取和关闭 Body。285 收藏 -
Go 1.22 起可用 AppendEncode 把 Base64 结果追加到现有切片。本文讲清容量预估、dst[:0] 复用、返回值接收与底层数组所有权边界。285 收藏 -
用 context.WithCancelCause 把请求取消的真实原因带过边界,并通过 errors.Is、context.Cause 和并发测试确认错误链没有丢失。284 收藏 -
Go 1.25 的 go vet 新增 hostport 分析器,可以发现用 fmt.Sprintf 拼接 host 和 port 后传给 net.Dial 的 IPv6 地址错误。本文从错误现场出发,改用 net.JoinHostPort,并用 vet 与运行测试核对修复结果。284 收藏 -
用 Go io/fs.Sub 把一个目录裁成受限文件树,配合 fs.ValidPath 和 fs.Open 处理路径边界、目录遍历与失败回退。284 收藏 -
FindAllStringSubmatchIndex 返回 UTF-8 字节下标。本文用 Go 将完整匹配和子表达式转换为 rune 区间,并处理可选分组的 -1 与字素簇边界。284 收藏 -
围绕 Go testing.B.RunParallel 说明 b.N、GOMAXPROCS、SetParallelism 与墙上时间的关系,给出在并行基准结束后用 b.N 除以 b.Elapsed 估算 ops/s 的写法,并梳理 CPU、锁和外部依赖造成的吞吐边界。284 收藏 -
maps.EqualFunc 允许 Go 比较键类型相同但值类型不同的两个 map。本文用 string 与 []byte 的例子说明比较器写法,并梳理 nil、空 map、缺失键和不可比较值的边界。284 收藏 -
Go 反射处理结构体元数据时,可以用 reflect.Type.Fields 按声明顺序遍历 StructField,再通过 Tag.Lookup 读取标签;需要同时拿到字段值时使用 reflect.Value.Fields。本文从字段扫描、标签校验到嵌套结构体边界给出可运行示例。283 收藏