Go教程技术文章
-
net/http.ServeMux 注册 /orders/ 子树后,访问 /orders 可能先发生尾斜杠重定向。本文用 Go 1.22+ 方法模式和 {$} 精确匹配说明如何固定 POST 规范地址、兼容两种路径,并排查 301、302、307、308 对请求体的影响。290 收藏 -
从 io.Copy 的接口选择入手,拆解 os.File.ReadFrom 如何走 ReaderFrom 快路径,以及短读、EOF 和部分写入时该怎样验证。289 收藏 -
用 log/slog 的 slog.Group 组织请求与数据库字段,配合 TextHandlerOptions 核对嵌套键的最终输出,避开参数错位和重复前缀。289 收藏 -
Go 命令行读取密码时,可用 golang.org/x/term.ReadPassword 关闭本地字符回显。本文比较不同输入方式,并说明非终端错误、换行处理和敏感字节清理。288 收藏 -
Go filepath.Rel 遇到绝对路径和相对路径混用时,先用 filepath.Abs 统一计算基准,再处理跨根目录、../ 越界、符号链接和 URL 路径等边界。288 收藏 -
从 context.WithTimeout、Done 和 Err 的真实控制流出发,说明为什么设置超时不等于 goroutine 自动停止,并给出可验证的退出写法。287 收藏 -
Go 的 time.Date 不会因为月份或日期越界返回 error,而是按日历规则自动归一化。本文用示例说明自动进位的边界,并给出严格校验年月日的实用写法。287 收藏 -
说明 Go interface 携带 nil 指针时为什么仍不等于 nil,并用错误返回边界、类型断言和三种状态测试避免 typed nil 误判。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.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 收藏