Go教程技术文章
-
使用 Go 的 exec.Cmd.StdinPipe 向子进程提供标准输入时,关键不是只拿到一个 io.WriteCloser,而是明确 Start、Write、Close、Wait 的生命周期。本文用一个可迁移的写法说明如何让 EOF 正确到达,并区分输入写入错误、启动错误和命令退出错误。157 收藏 -
Go x/text/language 的 Compose 适合把 Base、Region 和已有 Tag 组合成语言标签。本文用实际代码说明参数类型、重复部件覆盖、Variant 与 Extension 累积、错误处理和规范化选择。157 收藏 -
robfig/cron/v3 默认会在独立 goroutine 中运行任务。本文用 SkipIfStillRunning 配置同一进程内的跳过策略,并对比 DelayIfStillRunning、单任务包装和多实例边界。157 收藏 -
Go go/constant.Sign 只返回 -1、0 或 1,但非零复数和 Unknown 也可能得到 1。本文从普通数值、复数和未知值三个场景说明 Sign 的语义,演示如何先判断 Kind 再做符号分类,并给出何时改用 Compare、Real 和 Imag 的边界。157 收藏 -
用路由配置示例区分 maps.Clone 的外层独立与切片共享,给出专用两层复制函数,并说明 nil 语义、对象所有权和并发复制边界。157 收藏 -
Go 的 url.URL 中,Host 保留主机与可选端口,Hostname() 返回不带端口的主机名。本文用域名、显式端口、相对路径和 IPv6 说明两者的选择边界。156 收藏 -
Go filepath.Match 的反斜杠规则会随操作系统变化:Unix 类系统把 \c 当作对字符 c 的转义,Windows 则把反斜杠当作路径分隔符。本文用最小示例说明通配符、完整匹配、ErrBadPattern 和跨平台写法。156 收藏 -
Go crypto/aes.NewCipher 只接受 16、24 或 32 字节密钥,分别对应 AES-128、AES-192 和 AES-256。本文说明如何提前判断长度、用 KeySizeError 读取错误,并区分密钥长度与 AES 分组大小。156 收藏 -
Go 读取 ZIP 时不需要遍历并读取全部文件。本文对比 zip.Reader.Open 与 File.Open,说明如何按条目名或索引只打开一个文件,并处理路径、目录、错误和资源关闭边界。156 收藏 -
用 Go token.File 将字节偏移转换为文件、行号和列号,说明 AddLine、PositionFor、//line 调整及越界边界。156 收藏 -
用 Go time.Time.AppendFormat 把时间文本追加到已有 []byte 缓冲区,说明返回值、循环复用容量、布局时区和基准判断边界。155 收藏 -
Go unicode/utf8.FullRune 用来判断字节切片开头是否已经收齐一个 UTF-8 编码。本文用分块读取场景说明它与 DecodeRune、Valid 的边界、尾部残片和错误字节处理方式。155 收藏 -
用 Go 1.24+ 的 os.OpenInRoot 在固定目录内打开外部传入文件名,理解 ..、绝对路径、符号链接、错误处理和版本边界,避免把 filepath.Join 当成安全隔离。154 收藏 -
讲清 Go bufio.Reader.ReadByte 的 byte、error 返回约定,演示如何区分有效字节、io.EOF 与其他读取错误,并处理缓冲状态和 UnreadByte 边界。154 收藏 -
介绍go-multibase如何根据文本前缀恢复编码类型和原始字节,给出Base16与Base64url往返示例,以及长度限制、编码白名单和业务解析边界。154 收藏