Go语言技术文章
-
介绍 Go os/exec 中 Env 为 nil、继承后追加变量和白名单隔离三种写法,说明重复键、PATH、shell 与跨平台边界。209 收藏 -
Go sync.Cond 的 Signal 和 Broadcast 只是唤醒等待者,不能替代共享条件本身。本文用一个受 Mutex 保护的队列状态说明为什么 Wait 必须放在 for 条件循环中,以及如何在状态更新后选择 Signal 或 Broadcast,避免先检查后等待、误用 if 和忘记解锁。208 收藏 -
Go race detector 的创建栈用于追踪任务启动来源,访问栈用于定位冲突读写。通过任务编号、共享对象与互斥锁示例,说明如何确定同步责任并理解报告范围。206 收藏 -
本文从 root: 请求路径的实际问题出发,用 bytes.CutPrefix 解析协议前缀,再交给 Go 1.24 的 os.OpenRoot 和 Root.Open 读取受限根目录中的文件,并说明错误与关闭边界。206 收藏 -
os.Lstat 没有一个让它按配置决定是否跟随符号链接的开关:它固定描述链接条目,os.Stat 才描述目标。本文用 ModeSymlink、Readlink、相对路径基准和错误分支排查“配置没生效”的常见误解。206 收藏 -
围绕协议兼容、CRC32C 与流式更新,说明 Go hash/crc32 中 IEEE、Castagnoli、Koopman 和自定义校验表的选择方法。204 收藏 -
os.DirFS 可以把固定目录暴露为 io/fs,但它不是 chroot 安全边界。本文从最小读取写法、fs.ValidPath 输入约束和符号链接风险讲起,并给出 Go 1.24+ 使用 os.OpenRoot 的安全替代方案。204 收藏 -
用一个阈值查询小工具说明 Go slices.BinarySearch 的返回值、升序前提、插入位置语义和边界处理,帮助把标准库 API 组合成可复用的业务函数。203 收藏 -
讲清 Go html/template.JSEscapeString 的字符串级 JavaScript 转义边界,用最小示例对比 HTML、JavaScript 与 URL 语境,并说明何时应交给 html/template 自动处理,避免重复转义和不安全的可信类型。202 收藏 -
Go unique.Make 只接受 comparable 类型并返回 Handle,不会替业务规则返回 error。本文用空字符串、nil 指针和不可比较类型说明处理边界,再给出先校验、后规范化、按需保留句柄的工作流。202 收藏 -
Go bytes.TrimSpace 会按 Unicode 空白规则去掉字节切片首尾的空白,并保留中间内容。本文说明最小写法、空结果、返回子切片的共享存储边界,以及与 bytes.Trim 等函数的选择。201 收藏 -
Go bufio.Scanner 结果不稳定时,应分别检查临时缓冲复用、扫描错误、分词规则与异步顺序。通过有界串行示例说明 Text 快照、整批失败策略和数据交接边界。201 收藏 -
Go os.Args 判断缺少命令参数时,应先检查 len(os.Args) 是否小于所需参数数量,再访问对应下标。本文说明程序名与位置参数的关系,区分缺少参数和空字符串,并介绍何时交给 flag 解析选项。200 收藏 -
go work sync 面对的是工作区构建列表,不是任意单模块整理命令。本文用 go.work、GOWORK、use 模块和最小版本选择说明它何时会改写 go.mod,以及没有变化时该检查什么。198 收藏 -
在 Go 中反复把字节编码为十六进制文本时,可以用 hex.EncodedLen 计算容量,再用 hex.Encode 或 hex.AppendEncode 复用目标缓冲区。本文说明 len、cap、dst[:0] 和多段追加的正确关系。198 收藏