Go语言技术文章
-
Go encoding/hex 的 DecodeString 按两个十六进制字符组成一个字节,输入为奇数长度时会返回 ErrLength。本文结合入口校验、错误区分和协议选择,说明怎样处理半字节输入。191 收藏 -
Go CertPool 追加 PEM 根证书需分开处理读取错误与解析结果。说明空池、系统池副本和布尔返回值的范围,提供完整示例,并区分追加成功与 TLS 服务器验证。246 收藏 -
Go encoding/base64 返回 CorruptInputError 时,怎样把错误值还原为零基字节偏移,并区分非法字符、填充错误、尾部垃圾和 Strict 模式错误。235 收藏 -
Go TLS 客户端默认使用主机信任根,不会凭空信任自签名根证书。本文解释 RootCAs 的来源,并给出保留系统根证书、追加私有根证书的安全写法。189 收藏 -
Golang · Go问答 | 3小时前 | 标准库 · 文件读取 · Go问答 · Go archive/zip Store DEFLATE File.Open FileHeader.Method File.OpenRaw
Go archive/zip 的 FileHeader.Method 表示 ZIP 条目的压缩方法,不是文件格式。本文区分 Store=0 与 Deflate=8,说明 File.Open 的透明解压和校验、File.OpenRaw 的原始字节边界,并给出未知方法、ZIP64 尺寸和资源关闭的处理建议。241 收藏 -
Go gzip.Reader 默认合并多成员内容,Multistream(false) 在当前成员结束时停止。用完整内存示例比较两种读取方式,说明 Reset 复位、ByteReader 边界和资源关闭责任。211 收藏 -
讲清 Go io/fs.Sub 如何把嵌入文件系统的子目录映射为新根,并结合 fs.ValidPath、fs.ReadFile 与业务白名单处理路径边界;同时说明它不是符号链接安全沙箱。466 收藏 -
Go tar 解包时不要直接把 Header.Name 拼到目标目录。本文用 filepath.IsLocal 拒绝绝对路径和父目录,说明 ErrInsecurePath、filepath.Join、目录项以及 Linkname 的边界,并给出可复用的安全解包骨架。432 收藏 -
Go archive/zip 的 CRC 错误通常在条目完整读取到结尾时暴露,而不是在 File.Open 或 ReadCloser.Close 时返回。本文用 io.Copy、zip.ErrChecksum 和双层资源关闭说明如何准确识别损坏压缩条目。407 收藏 -
Go Close 负责关闭文件,不能替代 Sync 的持久化职责。区分 bufio.Flush 与文件同步,提供保留写入、刷新、同步、关闭错误的示例,并说明目录项与存储环境的保证边界。418 收藏 -
Go fs.WalkDir 不会自动进入目录中的符号链接目标,但 root 自身是符号链接时会以目标作为遍历起点。本文拆开这两个边界,说明如何在回调中识别链接并按业务策略显式处理。216 收藏 -
Go 的 os.CreateTemp 固定按 0600(受 umask 影响前)创建临时文件,因此权限比 0644 严格通常是正常语义。本文按触发信号、实际模式、受控 Chmod、回滚和跨进程排查说明怎样处理。132 收藏 -
用 Go 的 filepath.Clean、Join 和 Rel 处理用户提供的相对路径,说明 Clean 只能做词法归一化,并给出安全根目录边界判断的完整写法。393 收藏 -
Go AddDate 按业务时区增加日历日,Add 增加固定时长。用完整示例比较钟表字段、UTC 偏移和实际间隔,解释跨夏令时的差异及不存在或重复时刻的边界。481 收藏 -
Go time.Parse 遇到不带时区的字符串时会按 UTC 解释,这不是读取机器本地时区失败,而是标准规则。本文用 ParseInLocation 指定业务时区,并用 Location、Zone 和 Unix 对比确认结果。335 收藏