Go教程技术文章
-
用 atomic.Pointer 发布不可变配置快照,让并发读请求通过 Load 获取完整配置,并用 Store 或 CompareAndSwap 替换指针槽位,避免读到半更新状态。296 收藏 -
Go math/big.Int 的 Append 方法会把整数按指定进制的文本表示追加到已有 []byte 缓冲区。本文说明缓冲区复用、进制与前缀、负数和 nil 边界,并对比 Bytes 与 FillBytes 的二进制语义。296 收藏 -
go-smtp 通过 SendMail 的 []string 或 Client 的多次 Rcpt 调用,把多个地址加入同一封邮件的 SMTP envelope。本文进一步区分 To、Cc、Bcc 头部与实际投递地址,并说明拒收和连接清理边界。296 收藏 -
用 Go archive/tar 把大文件直接流式写入 tar 归档,准确设置 Header.Size,复用 io.Copy 处理单文件、多文件和网络输出,避免把整个文件读入内存。296 收藏 -
Go 的 filepath.ToSlash 只负责把当前系统路径分隔符转换成斜杠,适合生成跨平台资源键、归档条目和 URL 风格路径。本文用一个资源清单场景拆开 ToSlash、Clean、path 与 PathEscape 的边界。295 收藏 -
Go 的 http.Header.Get 只返回同名请求头的第一个值,完整读取应使用 Header.Values。本文结合 Add、Set、Get、Values 的差异,说明大小写规范化、直接 map 访问和返回切片复制的排查边界。295 收藏 -
Go Ticker.Stop 不会关闭通道,也不会终止工作 goroutine。通过串行周期任务示例,说明计时器所有权、Context 取消、done 完成确认,以及慢任务和新旧计时通道语义。295 收藏 -
Go 子测试调用 t.Parallel 后,循环变量、临时资源和进程级状态都可能造成互相影响。本文用一个表格驱动测试拆开共享来源,给出输入绑定、资源隔离、清理边界和复查命令。295 收藏 -
Go 标准库 encoding/base64 的 AppendEncode 可以把编码结果直接追加到已有字节切片。本文按完整工作流解释容量预留、返回切片、URL-safe 编码和多段追加的边界。295 收藏 -
讲清 Go x/text/message MatchLanguage 的参数顺序、语言回退和 Printer 使用边界,用同一个 language.Tag 统一翻译文本与地区数字格式。295 收藏 -
Go maphash.Hash 的哈希结果取决于 Seed 与写入字节序列,而不是字节通过 WriteString 还是 Write 进入。本文说明两条写入路径的等价条件、顺序边界、Reset 用法和 Hasher 中的编码方式。295 收藏 -
Go encoding/json 可用三态值字段区分缺失、显式 null 与正常整数。示例说明自定义解码、错误结果隔离和批次状态重置,并讨论固定结构的分配取舍。295 收藏 -
Go SSE 推送的关键不是循环 Write,而是用 ResponseController.Flush 提交事件,用 ticker 心跳维持空闲连接,并通过 Request.Context 感知客户端断开后停止生产。294 收藏 -
Go os.OpenFile 配合 O_CREATE 和 O_EXCL,可以把文件不存在检查与创建合并成一次独占操作。本文说明先检查再创建的竞态、已存在错误的判断、写入收尾和不同文件创建策略的选择。294 收藏 -
Go 1.20 起可以用 context.WithCancelCause 保存具体取消原因,再用 context.Cause 读取;本文区分 ctx.Err 的通用状态与 Cause 的诊断信息,并说明父子 context 的首次取消和超时原因设计。294 收藏