Go语言技术文章
-
解释Gonum插值器区间外预测的包级合同与PiecewiseLinear端点行为,给出显式拒绝、夹取及来源标记的原创包装示例与理论结果对照。413 收藏 -
Go 1.23 新增的 unique.Make 可以把 comparable 值规范化为可比较的 Handle。本文从字符串标签注册场景出发,组合一个小型工具,说明去重、Handle 比较、Value 读取以及并发边界。413 收藏 -
Go unique.Make 可把重复的可比较值规范化为 Handle[string],用于批处理中的重复标签比较与索引。本文用一个最小示例说明它和 map[string] 的取舍、Value 边界、并发语义与持久化限制。413 收藏 -
Go os.DirFS 可以把一个目录包装成可复用的 fs.FS,批处理时在循环外创建并用相对路径读取文件,可减少重复路径处理;但它不是通用的 chroot 安全机制,符号链接和相对根目录仍需单独判断。413 收藏 -
解释 Go archive/tar 长文件名看似被截断的原因,给出显式使用 PAX、正确读取 Header.Name,以及批处理复用缓冲区减少额外分配的写法。413 收藏 -
Go token.File 的 Position.Column 不是中文字符数量,而是基于 UTF-8 字节偏移计算的行内列号。本文用 Pos、Offset、Position 和中文标识符示例说明如何正确换算,并处理 //line 位置调整。413 收藏 -
解释 Go net.Resolver 自定义 DNS 后仍走系统配置的原因,区分 Go 内置解析器与 cgo 路径,并给出 PreferGo、字面 IP:端口和 Dialer 绑定的可执行写法。413 收藏 -
用 Go crypto/subtle.ConstantTimeCompare 做密钥或摘要校验时,长度不一致会直接返回 false。本文从源码语义、输入预处理和可复现测试三个角度说明如何避免误判与边界漏洞。412 收藏 -
Go 的 io.ByteScanner.UnreadByte 不是通用回退栈:它只约定回退最近一次成功的 ReadByte。本文用 token 读取示例说明连续回退、其他读取操作和 EOF 后的状态边界。412 收藏 -
Go build tags 没生效时,先用 go list 看文件是否进入 GoFiles,再分别检查 //go:build 的位置、表达式逻辑、文件名后缀和 -tags 参数。本文给出一套不依赖猜测的排查顺序。412 收藏 -
讲清 Go http.Request.Clone 复制请求并替换目标 URL 的正确写法,覆盖 Host、RequestURI、查询参数和 Body 重发边界。412 收藏 -
Go 编译缓存变大时,先用 go env 找到 GOCACHE 和 GOMODCACHE,再按构建、测试、模块下载和 fuzz 缓存分别选择 go clean 参数,避免误删依赖源码。412 收藏 -
Go env -w 会把设置保存为用户级 Go 环境默认值,而命令前的 NAME=VALUE 只影响当前进程。本文用 GOPROXY、GOENV 和 go env -u 说明优先级、适用场景与清理方法。412 收藏 -
FileHeader.Filename 是客户端提交的展示元数据,即使 Go 做了基础名处理,也不应直接决定服务器路径。本文用随机存储名、扩展名白名单和受控目录完成安全保存。412 收藏 -
filepath.Rel 会按当前操作系统的分隔符、绝对路径和卷名规则计算词法相对路径。本文给出可复用封装,说明不同盘符、绝对与相对混用、ToSlash、符号链接及安全边界,并用表驱动测试验证。412 收藏