Go教程技术文章
-
Go os/signal 的 channel 容量不是信号种类数量。本文从 Notify 的非阻塞发送、接收速度和退出生命周期出发,说明容量 1 何时足够,以及何时需要更大的缓冲。157 收藏 -
用 K comparable 和数值联合约束抽象 Go 求和逻辑,保留整数、浮点数及自定义数值类型的返回类型,并说明 ~、类型推断与边界。157 收藏 -
Windows 下 filepath.Rel 遇到 C: 和 D: 这样的不同盘符时不能构造相对路径。本文解释 VolumeName 与 Rel 的边界,给出同盘计算、跨盘兜底和测试约定,避免把错误吞掉。157 收藏 -
Go URL.ResolveReference 的基础路径末尾斜杠会改变相对路径合并位置。通过目录前缀对照和四条表驱动用例,区分目录基址、当前页面、根路径与查询引用,避免错误拼接。157 收藏 -
用tea.Batch并发启动互不依赖的命令,将耗时操作放入Cmd闭包,并用独立消息更新模型状态。示例讲清结果无序、完成标记与后续任务依赖的处理方式。157 收藏 -
Go HTTP客户端分层超时需要区分网络环节上限、请求业务预算与客户端总超时。本文通过原创小响应示例说明配置方法、正文读取和资源关闭,并解释超时并存与常见误用。157 收藏 -
围绕 Go os/exec 的 Cmd.Env 和 Cmd.Environ,说明如何用允许名单构造最小环境,并处理 PATH、Dir、重复键与跨平台边界。156 收藏 -
Go 目录读取要同时处理排序、批量和内存边界:os.ReadDir 适合一次读取并按文件名排序,File.ReadDir(n) 适合固定批次消费但返回目录顺序。本文给出两种写法、EOF 处理、资源释放和全局排序方案。156 收藏 -
Go 1.22 起可用的 database/sql.Null[T] 通过 V 和 Valid 保留 SQL NULL 语义。本文用 QueryRow、Rows.Scan 和写回参数说明可空字段的扫描方式、类型边界与常见误区。156 收藏 -
Go 的 binary.AppendUvarint 会把 uint64 按每组 7 位追加为变长字节序列。本文用已有前缀、连续追加、容量复用和 Uvarint 解码示例说明怎么用,以及 10 字节上限、截断输入和有符号整数的边界。156 收藏 -
Go runtime/secret 可在受保护调用树结束时擦除寄存器和栈,并在相关堆对象不可达且被 GC 发现后擦除分配,从而缩短临时密钥出现在后续内存转储中的时间。本文给出最小用法、构建条件、平台边界与不能被它消除的副本风险。156 收藏 -
Go http.Request.Pattern 保存的是 ServeMux 实际匹配的路由模式。本文用 GET /orders/{id} 示例说明怎样读取 Pattern、怎样用 PathValue 取得变量值,以及直接调用 handler 和客户端请求导致空字符串的边界。156 收藏 -
Go 的 archive/tar 适合流式读取归档。本文区分 Header 与 payload,演示只保留文件头元数据、用固定缓冲区消费内容,并说明超大条目和异常归档的内存控制边界。155 收藏 -
用 Go testing.T.Run 把表格驱动测试组织成可读、可筛选的层级子测试,说明命名路径、嵌套分组、go test -run、t.Cleanup 与并行测试的边界。155 收藏 -
Go 的 encoding/csv.Reader 不会自动移除文件开头的 UTF-8 BOM,首个字段可能因此多出不可见字节。本文用流式包装只检查前三个字节,说明如何保留普通文件、处理短输入并继续使用字段数检查。154 收藏