Go语言技术文章
-
strings.FieldsFunc 适合按字符规则切分文本,但它会合并连续分隔符并丢弃空字段。本文用配置行解析场景说明它的边界,并给出保留空字段的自定义写法。184 收藏 -
Go 1.24 引入 os.OpenRoot 后,如何把用户传入的相对路径限制在指定目录内?本文用一个可运行的文件读取示例,验证正常打开、绝对路径和 .. 目录逃逸三类结果。182 收藏 -
Go 的 net/http Cookie 同时设置 Expires 与 MaxAge 时,浏览器如何判断会话、持久化和删除?本文用 SetCookie 与 Request.Cookie 的最小例子拆开三个边界。181 收藏 -
io.Copy 返回的 written 和 err 如何判断传输是否完整?本文从写入中断现场出发,拆解 EOF、写入错误、短写入与大小核对的边界。180 收藏 -
Golang · Go问答 | 1天前 | 字符串 · 标准库 · go · 接口设计 · 边界处理 · Go strings.CutPrefix Go strings.CutSuffix 协议头 字符串裁剪 零值返回
strings.CutPrefix 和 CutSuffix 都返回裁剪后的字符串与 found 布尔值,但空前缀、未匹配和完整匹配的结果不同。本文用协议头解析场景说明如何组合两个函数,避免把未匹配误判为空字符串。180 收藏 -
Go 1.25 为 sync.WaitGroup 增加 Go 方法,把启动 goroutine、计数和 Done 收口到一个调用里。本文对比旧写法,说明空 WaitGroup 的启动时机、panic 约束、嵌套任务和复用边界。179 收藏 -
Go 1.21 给 bytes.Buffer 增加 Available 和 AvailableBuffer 后,如何判断可写余量、避免误解短写,并用 Cap 和 Len 验证扩容结果。178 收藏 -
Golang · Go教程 | 1天前 | 错误处理 · go · 模板 · 后端开发 · 渲染 · Go Template html/template text/template 模板运行 missingkey
Go 模板渲染可选片段时,字段缺失不一定会立刻报错。本文用 text/template 的模板运行、Option("missingkey=error") 和显式分支拆开默认行为、严格校验与可选字段的边界,给出可直接运行的处理方式。177 收藏 -
Golang · Go问答 | 23小时前 | go · Context · net/http · Go context取消 http.NewRequestWithContext Request.WithContext
http.NewRequestWithContext 与 Request.WithContext 都能把 context 交给 Go HTTP 请求,但创建时绑定、浅拷贝语义和请求体复用边界并不一样。本文用可运行示例拆开取消责任、Clone 深拷贝和常见误区。177 收藏 -
用一个请求日志小项目说明 Go slog.Handler.WithAttrs 的正确用法:把稳定字段提前绑定到 Handler,再让每次 LogAttrs 只写变化字段,同时验证并发输出与字段快照边界。177 收藏 -
用 Go 的 base64.NewEncoder 流式编码时,Write 只处理完整 3 字节块,尾部数据要靠 Close 刷出;本文结合源码说明部分写入和错误传播的判断方法。174 收藏 -
netip.ParseAddr 失败时返回的是无效 Addr 和可诊断的错误,不能只靠 Addr{} 判断输入问题。本文用最小 Go 示例拆开 IPv4、IPv6、空字符串和带区域标识的边界,并给出服务端校验时可复用的判断顺序。170 收藏 -
bufio.Reader.Peek 返回的是内部缓冲区视图,下一次读操作后就可能失效。本文用一个协议头判断场景说明 Peek、Read、copy 和 ErrBufferFull 的边界。169 收藏 -
Go 测试里 t.Setenv 会修改整个进程的环境变量,并在测试清理阶段恢复原值,因此不能和 t.Parallel 或并行祖先一起使用。本文从失败现象、执行时间线和可复现代码出发,说明如何拆分测试、验证恢复结果,并处理需要并发覆盖的配置场景。168 收藏 -
Golang · Go教程 | 1天前 | sync · golang · 文件操作 · Close · os.File · 错误处理 数据持久化 文件落盘 Go os.File.Sync Go Close
Go 文件写入后为什么还要区分 Sync 和 Close?本文从 Write、Sync、Close 的调用链出发,说明落盘确认、defer 顺序与错误返回值该怎么处理。168 收藏