Go语言技术文章
-
Go maps.Keys 返回无序键迭代器,结合 slices.Sorted 生成独立有序切片,再按键读取值。示例说明空映射、后续修改和业务比较规则。427 收藏 -
os.DirFS 不接收字节缓冲区。本文用完整 Go 文件摘要示例说明如何在打开文件后复用工作区,并解释 CopyBuffer 快速路径、切片长度、串行所有权和目录访问边界。426 收藏 -
path.Match 不会打开或释放资源,它适合把资源名称筛成可疑集合。本文说明怎样设计 name 和 pattern,区分 matched=false 与 path.ErrBadPattern,再把命中结果交回文件、连接或任务的生命周期检查。426 收藏 -
Go 的 url.Values 用 map[string][]string 表示查询参数:Add 追加同名值,Set 替换全部旧值,Get 只取第一个,Encode 按键排序并保留每个键的值顺序。本文用请求、签名和边界检查示例说明怎样稳定输出重复查询参数。425 收藏 -
自定义 ResponseWriter 包装器如果没有 Unwrap,ResponseController 可能找不到 Flush、deadline、全双工和 Hijack 能力。本文从一次中间件故障出发,给出可转发包装器、能力检查和错误边界。424 收藏 -
Go net/http.Transport 资源没有释放时,先检查 Response.Body 是否关闭并区分活动连接与空闲连接,再用连接池参数和生命周期清理控制资源回收。424 收藏 -
解释 RawBytes 的借用期限与切片共享,展示当前行复制和直接 Scan 到 []byte 的写法,并说明异步移交、NULL、Rows.Err 与关闭结果集的边界。424 收藏 -
Go 的 net.IPMask.Size 返回前导 1 的数量和掩码总位数。本文用 IPv4、IPv6、/0 与非连续掩码对照,说明怎样准确判断连续 CIDR 前缀,避免把合法零前缀误判为错误。424 收藏 -
Go regexp.Regexp.FindReaderIndex 用 io.RuneReader 搜索流式输入时,返回值是匹配区间的字节偏移而不是字符下标。本文说明 m[0]、m[1]、nil 和超前读取的含义,并给出选择其他 API 的边界。423 收藏 -
Go runtime.KeepAlive 只负责在指定调用点保持对象可达,不会修复数据竞争或非法指针。本文按资源句柄、终结器、unsafe/cgo 与并发边界拆解结果不稳定的排查方法。423 收藏 -
Go constant.Bytes 输出整数绝对值的小端字节,因此不保存负号。本文给出符号与幅值分离的编码和还原写法,说明它与补码、文本的区别,以及类型、长度、零值和跨系统转换的边界。423 收藏 -
Go 1.21 之后,go 命令可以按项目要求自动切换工具链。本文用 GOTOOLCHAIN=local 固定当前捆绑版本,说明环境变量优先级、go.mod 约束、local 与 auto 的差异,以及更高版本要求下如何处理。422 收藏 -
本文围绕 Go httptrace.PutIdleConn 解释连接回收到 Transport 空闲池时的 nil 与错误信号,并对比 DisableKeepAlives、响应体关闭和 HTTP/2 下的判断边界。422 收藏 -
bytes.CutPrefix 同时返回裁剪后的字节视图和 found 标志。本文用消息头示例区分空输入、空前缀、未匹配前缀与空载荷,并说明异常分支和切片生命周期。422 收藏 -
Go os.RemoveAll 删除只读目录失败时,先判断错误来自文件本身、父目录权限还是平台差异,再决定是否受限修复权限并重试。本文给出安全边界、错误分类和可复用的 Go 处理示例。421 收藏