Go语言技术文章
-
Go 事务业务代码返回 nil 并不代表提交成功。本文用可复用的 WithinTx 函数分别处理 BeginTx、业务执行、Rollback 与 Commit 错误,并说明上下文取消、panic 和 sql.ErrTxDone 的边界。495 收藏 -
Go bufio.Scanner 报 too many empty tokens,通常不是缓冲区太小,而是自定义 SplitFunc 在 EOF 下反复返回未推进的非 nil token。本文用返回值关系说明根因、修复方式和 Reader 的适用边界。495 收藏 -
Go unsafe.Slice 的长度参数是元素数,不是 C 缓冲区字节数。本文用 cgo 示例说明如何校验指针、换算长度、维持 C 内存生命周期,并避开布局和 Go 指针陷阱。495 收藏 -
Go 的 string 按字节存储,直接切片可能把多字节 UTF-8 字符截在中间,产生非法编码。本文用可复现代码说明原因,并给出按 rune 截取与按合法字节边界截取的选择方法。494 收藏 -
Go ServeMux 将尾斜杠模式视为子树,访问子树根的无尾斜杠路径时会默认重定向。本文用 httptest 验证状态码与 Location,并说明如何注册精确路径覆盖默认规则。494 收藏 -
从最终输出类型、读取需求、Grow 的字节语义和 Bytes 的别名边界出发,说明 strings.Builder 与 bytes.Buffer 在 Go 中如何选择。494 收藏 -
用 Go runtime/trace 的 Flight Recorder 保留延迟尖峰前的有限执行轨迹,配置 MinAge、MaxBytes,并在阈值触发时安全写出快照。493 收藏 -
Go 的 url.Values 本质是 map[string][]string。批量合并查询参数时,Add 负责追加,Set 负责替换;配合 Clone 和 Encode 可以实现有优先级、可复用且不污染原输入的 URL 查询构造。493 收藏 -
围绕 Go http.CookieJar 的 Secure 属性,说明 HTTP 测试为何取不到安全 Cookie,并给出 HTTP 与 TLS 测试入口、Jar.Cookies(u) 和四项排查清单。493 收藏 -
Go container/list 删除异常通常不是链表坏了,而是把 Value 当成 Element、节点来自另一条 List,或遍历时没有先保存 Next。本文按这三类现象给出排查和回归清单。493 收藏 -
deferclose 不是 Go 内置函数,通常指用 defer 安排 Close。本文解释 defer 的后进先出顺序、循环里的作用域,以及文件和 sql.Rows 的关闭错误如何处理。493 收藏 -
Go 控制 multipart 请求体积不能只调大或调小 maxMemory。本文用 MaxBytesReader 限制总 body,用 ParseMultipartForm 管理解析内存,再用 MultipartReader 和 LimitReader 控制单个 part,补上数量、临时文件和错误处理边界。493 收藏 -
Go 的 O_APPEND 负责把写入定位到文件末尾,O_TRUNC 则在打开可写文件时清空已有内容。本文用一个小工具拆解两者组合,给出覆盖写、追加写和安全新建的选择方法。493 收藏 -
通过 money 模块与 order 服务的小项目,演示如何拆分 Go 内部模块、用 go.work 本地联调、为子目录模块创建语义化版本标签,并用 v1 兼容规则与 /v2 路径维护清晰依赖边界。492 收藏 -
本文实现一个源阶段、转换阶段、过滤阶段和汇聚端组成的 Go 数据管道。每个阶段创建、发送并关闭自己的输出 Channel,下游只接收;同时用 context 处理提前结束,并说明多 worker 阶段如何等待全部发送完成后单点关闭。492 收藏