Go教程技术文章
-
Go crypto/aes 的临时分配通常来自重复初始化、Seal/Open 每次从 nil 切片扩容以及热路径中的字符串转换。本文用 AES-GCM 说明如何复用 AEAD、目标缓冲区和 nonce 存储,并划清别名与 nonce 安全边界。402 收藏 -
用同一段 Go 示例验证 fmt.Appendf 的追加语义、容量增长与格式占位符边界,给需要构造日志或协议字节流的代码一个可复用的写法。401 收藏 -
Go 处理带 BOM 的 UTF-16 文件时,可以用 golang.org/x/text 的 unicode 与 transform 按 BOM 识别大小端,再流式写出 UTF-8。本文给出临时文件替换方案,并说明缺少 BOM、乱码和并发写入的边界。401 收藏 -
解释 Go http.Cookie 同时设置 MaxAge 与 Expires 时的序列化结果、浏览器优先级,以及持久化、会话和删除 Cookie 的配置排查方法。401 收藏 -
filepath.WalkDir 的回调参数是 fs.DirEntry,不是旧版 Walk 的 fs.FileInfo。本文说明 Type、IsDir 和 Info 的区别,演示如何判断目录、普通文件、特殊文件与符号链接,并处理 Info 失败和遍历错误。401 收藏 -
Go 的 encoding/csv 会自动忽略完全空行,但不会把只含空格的行当作空行。本文说明 Comment、TrimLeadingSpace 与 FieldsPerRecord 的取舍,并给出带错误处理的读取示例。401 收藏 -
Go WebSocket 握手前应使用 websocket.Upgrader.CheckOrigin 精确校验 Origin。本文说明 Origin 与 Host 的边界、白名单写法、常见放行反例,以及来源校验与身份鉴权的区别。401 收藏 -
Go SQL事务可采用显式提交、延迟回滚兜底结构。本文以库存预留代码说明中间错误返回、ErrTxDone、清理异常与提交失败的处理,并解释事务上下文和盲目重试的风险。401 收藏 -
用 Go 标准库 container/list 和 map 实现一个可运行的 LRU 缓存,说明访问命中、队首移动、更新和队尾淘汰之间的关系,并补充容量与并发边界。401 收藏 -
Go 读取 ShiftJIS 日文 CSV,可先用 x/text 解码为 UTF-8,再交给 csv.Reader 逐条解析。本文给出文件导入函数,说明列数、替换字符和错误处理边界。401 收藏 -
Go roaring 可以用 WriteTo 和 ReadFrom 在 io.Writer/io.Reader 之间传输 Roaring 位图,也可以用 MarshalBinary 和 UnmarshalBinary 处理完整字节切片。本文说明两种入口、错误处理、容量估算与 32/64 位兼容边界。401 收藏 -
用户输入被拼进 Go 正则表达式时,regexp.QuoteMeta 可以把元字符变成字面量。本文用搜索过滤场景拆开转义、拼接、匹配和空输入边界。400 收藏 -
从 Logger、Handler、WithAttrs 和 WithGroup 的调用关系入手,解释结构化日志字段如何进入 Record,以及自定义 Handler 面对并发写入时应该承担哪些边界。400 收藏 -
Go database/sql 查询完成后,Rows.Close 仍可能报告驱动或网络错误。本文用一个可复现的事务流程说明关闭、读取错误与 Commit 的检查顺序。400 收藏 -
Golang · Go教程 | 1个月前 | CGO · 资源管理 · Go教程 · runtime.KeepAlive runtime/cgo.Handle Go cgo C库句柄 LockOSThread
Go 封装 C 库句柄时,应让一个包装对象独占 C 指针,以显式且幂等的 Close 负责释放,并用互斥锁处理并发访问。若 C API 依赖线程状态,则用锁定 OS 线程的专属 goroutine 承担创建、调用与销毁。本文同时说明 cgo 指针边界、KeepAlive、回调句柄和发布检查。400 收藏