Go语言技术文章
-
用 Go afero 的 BasePathFs 为导出逻辑建立工作目录边界,演示相对路径写入、父目录创建、越界失败和安全边界判断。300 收藏 -
用 Go 的 base64.RawURLEncoding 生成不带等号的 URL 安全令牌,讲清字母表、编码解码、填充兼容和长度错误的处理边界。300 收藏 -
Go sort.SliceStable 会按比较函数原地排序,并保持比较结果相等的记录在输入中的相对顺序。文章用带序号的记录拆开稳定性与副本两个问题,给出同键比较、原地排序和 copy 后排序的可用写法。300 收藏 -
slog JSONHandler 输出字段顺序变化时,先区分 JSON 语义变化与文本排列变化。本文说明 With 属性、调用属性、分组和 ReplaceAttr 的影响,并给出结构化测试与固定字节协议的处理边界。300 收藏 -
Go iter.Pull 把 iter.Seq 的推送式遍历转换为 next 拉取,并返回 stop 管理提前退出。本文用两个序列的并行读取说明 next、ok 和 defer stop 的职责边界。300 收藏 -
用 strconv.AppendFloat 生成浮点文本时,format 决定外形,prec 决定小数位或有效数字,bitSize 决定按 float32 还是 float64 的语义格式化;本文给出参数组合和缓冲区追加写法。300 收藏 -
Go 的 io.Reader 允许在最后一批数据返回 n > 0 与 io.EOF,若代码忽略 n、处理空缓冲区或把整个 buf 当成有效数据,就会出现末尾多处理一次。本文用最小示例说明原因,并给出按 n 与 err 分开处理的可靠写法。300 收藏 -
Go path.Match 用 shell 风格通配符判断完整资源名,星号和问号不会跨过斜杠。本文说明 path 与 filepath 的边界、完整匹配规则、ErrBadPattern 处理和资源名筛选的落地清单。300 收藏 -
用 encoding/json.Decoder 的 InputOffset 和 SyntaxError.Offset 定位坏 JSON,区分字节偏移与字符位置,并给出流式解析、UTF-8 和错误行号的可复用处理方式。299 收藏 -
用 Go archive/tar Reader.Next 读取带 PAX 稀疏扩展的归档,核对 Header.Size、空洞补零、PAXRecords 与遍历边界,并给出可复现的验收方法。299 收藏 -
用 Go 1.23 新增的 os.CopyFS 把 embed.FS 复制到本地目录,说明目标目录创建、已有文件冲突、fs.ErrExist 判断和权限边界。299 收藏 -
filepath.Rel 报错通常不是目标文件不存在,而是 basePath 和 targPath 不在同一个路径坐标系。本文用 Go 示例拆解绝对相对混用、Windows 卷名、UNC 路径和 URL 误用,并给出可复用的错误处理封装。299 收藏 -
io.LimitReader 限制的是包装 Reader 在整个读取过程中的最大字节数,不是每次 Read 的缓冲区大小。本文用原创 Go 示例说明如何设置上限、正确处理 n 与 io.EOF,以及如何用 limit+1 判断源内容是否超限。299 收藏 -
用 Go signal.NotifyContext 把 SIGINT、SIGTERM 转成统一的 Context 取消,说明 worker、HTTP 服务和外部资源如何优雅收尾,以及 stop 的注销边界。299 收藏 -
Go 的 tls.Config.ServerName 为空时,默认安全校验无法确定要匹配的主机名,握手会在证书校验前失败。本文拆开 SNI、拨号地址、SAN 和 RootCAs,给出直连 IP 与自定义拨号的正确配置。299 收藏