Go教程技术文章
-
Go os/exec 的 Cmd.ProcessState 只能在子进程成功启动并完成 Run 或 Wait 后读取。本文比较 Run 与 Start 加 Wait,说明怎样区分启动错误、非零退出和成功退出,并用 ExitCode、Success、Exited 处理状态边界。363 收藏 -
strings.CutSuffix 返回去掉后缀后的字符串和 found 标志。后缀未命中时返回原字符串与 false;空后缀是一个特殊的命中场景,返回原字符串与 true。本文用最小写法和业务封装说明如何把两种情况分开处理。363 收藏 -
Go crypto/sha256.New224 返回 SHA-224 的 hash.Hash,摘要长度由 Size224 固定为 28 字节。本文结合分段写入、Sum 追加语义和一次性 Sum224,说明如何正确输出摘要并避免把切片前缀或哈希状态理解错。363 收藏 -
Go runtime/metrics 可以直接读取运行时导出的 GC 周期、堆对象和暂停时间指标,但采样时不能把累计计数当成单次耗时,也不能忽略指标类型。本文用采样器拆解 /gc/cycles/total:gc-cycles、/gc/pauses:seconds 与 Float64Histogram 的读取、换算和验收边界。362 收藏 -
Go 的 time.Duration 底层是纳秒计数,裸整数不会自动变成秒。本文用超时、重试和配置解析示例,说明如何显式绑定单位并避开截断与溢出。362 收藏 -
讲清 Go io.LimitReader 的字节上限与 EOF 语义,并用 http.MaxBytesReader 实现可识别超限错误的上传接口。362 收藏 -
Go 表驱动测试适合把多组输入、期望输出和用例名称集中管理,再用 t.Run 建立可筛选的子测试。本文围绕输入隔离、错误断言、循环变量和失败定位给出可直接改写的组织方式。362 收藏 -
Go 的 strings.FieldsFunc 适合按自定义 rune 规则切分文本。本文用字段导入场景说明它如何处理连续分隔符、首尾分隔符、Unicode 字符与空字段,并给出与 Split、FieldsFuncSeq 的选择边界。362 收藏 -
Go 1.21 引入的 slices.IndexFunc 可以按自定义谓词查找切片中首个有效值。本文从手写循环迁移到标准库 API,说明谓词设计、首个命中、空切片和 -1 结果的判断边界。362 收藏 -
Go io.SectionReader 把底层 ReaderAt 限定为一个有边界的读取视图。本文说明如何结合 SeekStart、SeekCurrent、SeekEnd 在分片内定位,并比较顺序读取与 ReadAt 的适用场景。362 收藏 -
Go sync.OnceValue 的初始化函数只执行一次,但如果函数 panic,返回函数后续每次调用仍会以同一个值 panic。本文用最小示例解释这一语义,并给出 recover 与重试边界。362 收藏 -
bufio.Scanner 默认缓冲区遇到超长日志行会返回 ErrTooLong。本文用可复现的日志读取场景说明如何设置 Buffer、何时改用 bufio.Reader,以及怎样验证内存和错误边界。361 收藏 -
bufio.Writer.Flush 遇到底层 Writer 短写时,会把未写完的数据留在缓冲区并记住错误。本文用可控的 io.Writer 演示状态变化、错误传播和安全恢复边界。361 收藏 -
Go 按字节限制输出长度时,使用 utf8.RuneStart 找到 UTF-8 字符边界,并结合 utf8.Valid 与 DecodeRune 处理非法或不完整编码。361 收藏 -
filepath.WalkDir 不会跟随符号链接进入目标目录,因为它按链接目录项本身判断 IsDir。本文用一个小型扫描器解释 DirEntry、Type、Info 与 EvalSymlinks 的边界。361 收藏