Go教程技术文章
-
读取用户提供的文件名时,filepath.Join 只能清理字符串,不能阻止符号链接把路径带出目录。Go 1.24 的 os.OpenRoot 与 Root.Open 让相对路径在指定根目录内解析,本文用下载文件场景说明控制流、测试边界和仍需保留的权限检查。325 收藏 -
用 Go 编写长时间运行的命令行任务时,signal.NotifyContext 可以把 Ctrl+C 或 SIGTERM 转成 Context 取消信号;本文演示如何停止新任务、保存最后一个完整检查点,并在下次启动时继续。325 收藏 -
Go 中 errors.Is 判断的是错误树里的目标语义,不是“看起来同类”的类型或文本。本文用 errors.Join 和自定义错误说明如何避免误判。325 收藏 -
通过业务层、bufio.Writer 缓冲层和底层 io.Writer 的分层记录,区分 Go 写入阶段错误与最终 Flush 错误,并给出第一次错误的收口方式。325 收藏 -
Go 的 bits.Add64 能同时返回 64 位和与一位进位。本文从 128 位加法扩展到任意长度 uint64 切片,讲清字序、进位传播、不等长补零和最高位溢出处理。325 收藏 -
os.CreateTemp 返回的是已经打开的临时文件,真正容易遗漏的是关闭文件描述符和删除失败残留。本文用一个安全写入配置文件的例子,拆开 Name、Close、Remove 与 Rename 的先后关系,并给出可复查的失败清理路径。324 收藏 -
本文用具体代码说明 Go bytes.Clone 如何解除 []byte 与原切片的底层数组别名,并梳理 nil、空切片、子切片 len/cap 以及缓存和异步交接时的复制边界。324 收藏 -
Go slices.Clip 会把切片容量收紧到长度,降低接收方 append 改写原底层数组的风险;本文用标签快照示例说明 Clip、Clone 与真正数据隔离的边界。324 收藏 -
Go 1.24 引入的 os.Root 可以把文件操作限制在指定目录树内。本文用文件创建场景说明 Root.OpenFile 的相对路径、创建标志、符号链接和错误检查边界。323 收藏 -
Go exec.CommandContext 取消后,不能只看 ctx.Done。本文用 Wait 确认子进程退出,并区分超时、主动取消、非零退出和 WaitDelay 边界。323 收藏 -
Golang · Go教程 | 3星期前 | 连接池 · Go教程 · net/http · HTTP客户端 · Go net/http Client Go Transport拆分 Go多上游HTTP客户端 Go连接池隔离 Go HTTP代理配置
Go net/http 访问多个上游时,不要直接改全局 DefaultTransport。本文用公共基线加独立 Transport 的方式拆分代理、TLS、连接池和超时边界。323 收藏 -
用 Go crypto/rand 生成固定长度随机字节,再以 RawURLEncoding 转成 URL 安全令牌;同时说明 TTL、一次性消费和 Go 1.24 rand.Text 的适用边界。323 收藏 -
说明 Go crypto/subtle.XORBytes 处理等长 []byte 的调用方式,解释返回值、目标长度、切片重叠和不等长输入的边界,并给出生产代码中的长度检查方案。323 收藏 -
Go 的 netip.AddrPort 用结构化 IP 与 uint16 端口保存地址,IPv6 文本则统一采用 [地址]:端口。本文说明 AddrPortFrom、ParseAddrPort、String、zone 和端口边界,避免日志与连接参数产生歧义。323 收藏 -
用 Go net/http 为静态资源设置稳定 ETag,配合 If-None-Match 返回 304,减少未变化文件的重复传输,并说明 ServeContent、Seek、Range 与资源更新的边界。322 收藏