Go教程技术文章
-
Go bytes.Buffer.WriteTo 会把缓冲区的未读内容写入 io.Writer,并返回已经写出的字节数和错误。本文用最小示例说明完整写入、短写入、错误保留和发布前检查,帮助你避免重复发送或误判成功。464 收藏 -
Go 1.25 的 net/http 提供 CrossOriginProtection,可以在 Handler 层拒绝非安全的跨源浏览器请求。本文从保护范围、可信 Origin、拒绝处理器和认证边界四个方面给出一套可落地的写接口接入方式。464 收藏 -
本文用 Go 标准库 debug/plan9obj 读取自有 Plan 9 a.out 文件的符号表,讲清 Symbols 返回的 Sym 字段、Open 与 Close 的调用顺序,以及 ErrNoSymbols 与普通读取错误的区别。464 收藏 -
Go fitsio 向 FITS 表写入一条结构化记录时,先用带 fits 标签的结构体确定列布局,再用 NewTableFrom 建表、Table.Write 写当前行、File.Write 提交 HDU。本文还说明新建文件与原地修改的边界,以及失败时如何保留可回退的输出。464 收藏 -
Go 1.27 针对小对象的专用内存分配器可降低分配成本,但它不会替服务端回收仍被引用的对象。本文用请求缓冲、缓存切片和 goroutine 三个边界,说明如何判断分配变快与对象活得过久是两件事。463 收藏 -
Go HTTP 接口不必启动真实端口就能测试。本文用 httptest.NewRequest 和 httptest.NewRecorder 构造 Handler 的输入输出,再分别断言请求参数、方法、状态码、响应头和正文,并说明 Handler 单元测试与真实服务器测试的边界。463 收藏 -
Go 的 utf8.DecodeLastRuneInString 处理空字符串时返回 RuneError 和 size=0。本文用返回值对照、UTF-8 多字节裁剪示例,区分空输入、合法 U+FFFD 与非法尾字节。463 收藏 -
通过包装 tls.ClientSessionCache 记录 Get、Put 与命中,再用 ConnectionState.DidResume 区分缓存命中、TCP 连接复用和真正的 TLS 会话恢复。463 收藏 -
围绕 Go maphash.Hash 的内部缓冲、Reset、String/Bytes 和 sync.Pool,说明如何按输入形态复用哈希状态并定位真正的堆分配来源。463 收藏 -
Write 返回成功不代表数据已经到达稳定存储。本文用 Go os.File.Sync 拆开写入、同步、关闭和文件替换的边界,给出可复用的错误处理写法。463 收藏 -
Go encoding.BinaryAppender 的 AppendBinary 接收已有字节切片并返回追加后的结果。本文说明如何保护已有前缀、避免保存调用方缓冲区,并让 BinaryMarshaler 与追加编码保持同一语义。463 收藏 -
本文围绕 golang.org/x/tools/go/analysis 的 Pass.Reportf,说明怎样从 AST 节点或原始文件行号取得 token.Pos,并提交带源码位置的静态分析诊断。463 收藏 -
依赖升级后版本仍不如预期,通常不是 go get 失效,而是 MVS 按完整模块图计算了 build list。本文用三组 Go 命令定位谁抬高了版本,并处理 replace、exclude 与工作区边界。462 收藏 -
sync.Pool 适合复用可丢弃的临时缓冲区,而不是业务状态或必须长期保留的资源。本文用 bytes.Buffer 和 []byte 说明 Reset、归还时机、异常容量清理与收益判断。462 收藏 -
Go 1.26 重写 go fix,以 modernizer 和 Go analysis 框架批量改写受支持的旧式标准库与语言用法。本文给出 fixer 盘点、-diff 预览、分批落盘、多平台覆盖和测试审查清单,并说明它不会自动迁移所有废弃 API。462 收藏