Go教程技术文章
-
用 Go go-vcard 保存多个 EMAIL 字段,并通过 PREF 参数指定优先邮箱;同时说明 Add、Set、PreferredValue 和 vCard 4 转换时的边界。466 收藏 -
Golang · Go教程 | 2个月前 | 内存 · 标准库 · go · 性能 · bytes.Buffer · go bytes.Buffer Buffer.Available Buffer.Grow ErrTooLarge
Go bytes.Buffer 的 Available 能告诉你当前还能直接写入多少字节,但它不是总容量,也不能替代 Grow 的容量规划。本文用批量拼接 HTTP 响应的场景,说明 Available、AvailableBuffer、Append、Grow 与 ErrTooLarge 的边界,并给出可回归的检查方法。465 收藏 -
Go 读取同名 Cookie 时,Cookie 方法只返回一个值;本文用 CookiesNamed 和 ParseCookie 保留头部顺序,并说明服务端无法从请求头反推出 Path、Domain、SameSite 与过期时间。465 收藏 -
Go bytes.Reader 同时支持顺序读取、绝对偏移读取和定位。本文区分 Len、Size、ReadAt、Seek 的职责,并用 io.SectionReader 固定下游可见的缓冲区间。465 收藏 -
Go database/sql 复用 sql.Stmt 时,先按 DB、Conn、Tx 区分所有权,再把创建与关闭绑定到同一生命周期;文章给出初始化复用、Rows清理、事务执行和停机收尾的实用写法。465 收藏 -
Go context.AfterFunc 会在取消后异步执行回调。本文用 stop 返回值、sync.Once 和 done channel 说明如何收敛外部资源的释放所有权,避免取消竞态下重复关闭或提前返回。465 收藏 -
slog.HandlerOptions 的 AddSource 能把调用文件和行号加入日志,配合 LevelError 可构造只输出错误的 Handler。本文给出路径精简、包装函数修正、结构测试和性能取舍的完整流程。465 收藏 -
用 Go 标准库 net/mail.ParseAddressList 解析多个收件人,分别读取 Name 与 Address,并用数量、字段和错误三个指标判断地址列表是否可继续进入业务流程。465 收藏 -
Golang · Go教程 | 1星期前 | goroutine · pprof · Go教程 · 运行时 · Go pprof 性能诊断 goroutine profile pprof.Lookup
Go 里可以通过 pprof.Lookup("goroutine") 获取运行时内置的 goroutine profile,再用 WriteTo 将它写入 bytes.Buffer 或文件。本文说明 debug=1 文本、debug=0 协议缓冲区和 debug=2 堆栈格式的区别,并给出错误处理与复用封装。465 收藏 -
Go errors.As 可以沿着 errors.Join 形成的错误树查找目标类型,并把首个匹配值写入目标指针。本文用可执行的类型化错误示例说明组合错误的遍历顺序、未命中处理和参数边界。465 收藏 -
Go Kong 的命令树来自 Go 结构体和标签:普通字段是 flag,带 cmd 标签的嵌套结构体才是子命令。本文从嵌套字段未生效的症状出发,给出二级命令、参数归属和 Run 方法的最小写法。465 收藏 -
用 go-imap v2 的 UIDSearch 配合 SearchCriteria.Since 按日期筛选邮件,理解日期边界、UID 返回值和后续 Fetch 的衔接方式。465 收藏 -
Go fs.WalkDir 会在读取目录前先调用 WalkDirFunc。本文用最小可用代码说明如何返回 fs.SkipDir 跳过当前目录、用 fs.SkipAll 停止剩余遍历,并处理 err、根目录和普通错误边界。464 收藏 -
Go HMAC 验签应先统一签名编码,再比较原始 MAC 字节。本文说明 hmac.Equal 与 subtle.ConstantTimeCompare 的区别、长度处理和安全的请求校验流程。464 收藏 -
使用 Go net/url 修改查询参数时,直接操作 URL.Query 和 RawQuery,避免重建路径导致 %2F 等编码边界发生变化。本文从最小写法、字段分工、重复参数和完整示例说明可靠做法。464 收藏