Go语言技术文章
-
ShiftJIS 的字节边界不一定等于字符边界,逐字节调用 Go 解码器会让日文字符失去配对关系。本文说明 japanese.ShiftJIS 的 Decoder、transform.Bytes 和 Reader 应如何选择,并给出分块乱码与 U+FFFD 的排查方法。414 收藏 -
Go 的 ed25519.PrivateKey 是 64 字节表示,而 RFC 8032 语境里的种子是 32 字节。本文用 PrivateKey.Seed 读取种子,说明如何校验长度、复制敏感材料,以及用 NewKeyFromSeed 重新构造私钥。414 收藏 -
解释 Go uniseg 的 StepString 为什么要把 newState 传回下一次调用,区分 state、rest 与 boundaries,并给出连续分段和常见错误的简洁示例。414 收藏 -
本文解释 Go 泛型约束 comparable 的类型集合与设计边界,说明切片、map、函数和接口为何不能一概而论,并用泛型去重函数展示 Go 1.20 之后的约束满足规则与运行时风险。414 收藏 -
用 embed.FS、fs.Sub 与 os.CopyFS 封装默认资源复制函数,附完整 Go 示例和准备命令,说明目录层级、同名文件冲突、错误链、部分完成及实际工具中的适用范围。414 收藏 -
Go 用 crypto/sha512 和 io.CopyBuffer 边读文件边计算 SHA-512,适合大文件与批处理。本文说明如何复用读取缓冲区和摘要暂存区,避免整文件读入内存,并区分完整性摘要与带密钥认证的边界。414 收藏 -
bufio.Writer.Buffered 返回的是缓冲层当前暂存的字节数,不是文件长度或已落盘数据。本文用最小示例说明 Flush 前后的变化,并给出按阈值批量刷新与处理尾部数据的写法。414 收藏 -
Go 中解析带小数秒的 RFC3339 时间,使用 time.Parse 配合 time.RFC3339Nano;解析后的小数秒可通过 Nanosecond() 读取,超过纳秒精度的部分会被截断,格式化时还要注意 RFC3339Nano 会去掉末尾零。414 收藏 -
netip.Addr 零值可通过 IsValid 判断,0.0.0.0 和 :: 则是有效的未指定地址。本文用可选地址解析示例区分配置缺失、解析失败和合法地址,并说明存储与读取边界。414 收藏 -
Go 自动工具链并不是单独安装到某个目录,而是以 golang.org/toolchain 模块进入 GOMODCACHE。本文说明如何定位缓存、判断复用条件,并配置 auto、固定版本与 +path 策略。414 收藏 -
Go 接口如果只返回一段错误字符串,调用方很难判断应该重试、提示用户还是修复参数。本文从订单查询接口的真实场景出发,设计可演进的结构化错误、参数语义、错误映射和兼容策略。413 收藏 -
用 Go 标准库 crypto/ecdh 完成一次可验收的密钥交换,说明公钥 Bytes 序列化、NewPublicKey 恢复、曲线匹配和共享密钥一致性检查。413 收藏 -
用 Go 的 os.OpenFile 创建一次性文件时,O_CREATE 只负责允许创建,O_EXCL 才把已存在检查与创建绑定成一次原子操作。本文用并发示例拆开两种标志的边界,并给出可验证的错误处理方式。413 收藏 -
处理用户传入的文件名时,先用 filepath.IsLocal 做词法边界检查,再把通过的路径交给 filepath.Join;本文说明 Clean、绝对路径、空字符串和符号链接之间各自能解决什么问题。413 收藏 -
Go 命令行任务不要直接在信号分支里强行退出。用 os/signal.NotifyContext 取消工作循环,在收尾阶段保存最后确认的进度,并给写盘和资源关闭留出有限时间窗口。413 收藏