Go教程技术文章
-
Go使用NewReaderDict和约定的预置字典解压zlib输入。本文用有输出上限的完整示例说明ErrDictionary、读取校验、Close及输入重试位置,避免把部分结果误认为成功。499 收藏 -
Go 1.23 起可以用 slices.Chunk 把切片按固定大小分成连续子切片并直接遍历。本文说明最小写法、尾块、空输入、非法 n、底层数组关系,以及旧版本 Go 的兼容实现。498 收藏 -
用 Go sync.Cond 实现有界队列时,关键不是记住 Signal 还是 Broadcast,而是让状态判断、Wait 循环和通知都在同一把锁下完成。本文拆解未满、非空和关闭三个条件,并给出按现象排查卡住问题的清单。498 收藏 -
使用 Go os.File 处理大文件时,减少临时分配的关键是复用调用方缓冲区,而不是给 Read 寻找隐藏开关。本文比较固定缓冲区、ReadAt/WriteAt、io.Copy 和 io.CopyBuffer 的适用边界。497 收藏 -
用 Gonum 的 WeightedDirectedGraph 保存正权边,再通过 DijkstraFrom 和 Shortest.To 查询单源最短路径、累计权重,并说明不可达节点、负权边和 DijkstraFromTo 的选择边界。497 收藏 -
使用 google/uuid.NullUUID 读写可空数据库字段,说明 Valid、SQL NULL 与零 UUID 的区别,给出扫描和更新函数,并解释空字符串、错误处理和接口更新三态。497 收藏 -
Go bytes.IndexByte 接收一个字节切片和单个 byte,返回该字节第一次出现的索引;没有匹配时返回 -1。本文结合分隔记录、索引 0、空数据和 UTF-8 多字节字符说明正确用法。497 收藏 -
Go t.Run 子测试采用唯一语义标识,可让 CI 重跑命令保持稳定。本文比较命名方式,给出分组代码与分段正则,解释重复名、斜杠和父测试执行的边界。497 收藏 -
Go errors.Join 可以把多个非 nil 错误组合成一个错误,并通过错误树继续支持 errors.Is 和 errors.As。本文从批量处理场景说明 nil 过滤、匹配能力、输出格式与使用边界。496 收藏 -
Go sync.OnceValue 把一次延迟计算封装成可并发调用的函数,后续调用共享同一结果。本文说明它的基本写法、错误与 panic 边界,以及为什么刷新数据必须重建闭包。496 收藏 -
用context.WithTimeout或WithCancel建立脚本取消条件,再通过LState.SetContext绑定。示例说明执行错误、资源清理与Go回调的协作取消边界,避免并发关闭同一Lua状态。496 收藏 -
Go go-wav 写 WAV 的关键是让 IntBuffer 的采样率、声道数和位深与 Encoder 参数一致,并在 Write 后调用 Close 刷新文件头。本文给出临时文件、错误回滚和格式记录的实用写法。495 收藏 -
介绍 Gonum optimize 如何使用 Settings.Runtime 设置时间预算,并通过 RuntimeLimit、Result.Status 与 Stats.Runtime 区分时间到期和正常收敛。495 收藏 -
Gonum quad.Fixed 的最后一个参数 concurrent 用来限制函数回调同时执行的数量。本文区分采样点数量与并发上限,并说明共享状态回调的安全处理方式。495 收藏 -
Go context.AfterFunc 可在上下文取消后执行清理,但 stop 不代表清理完成。通过独占停止句柄和完成通道,组织正常返回与取消回调,接收清理错误,并明确并发访问、等待和资源所有权的限制。495 收藏