Go教程技术文章
-
Go testing.T.FailNow 只能由运行测试函数的 goroutine 调用。本文解释 FailNow、Fail 和 Fatal 的停止语义,说明子 goroutine 误用为何导致误通过或清理失控,并给出错误回传、取消和等待 worker 的安全组织方式。383 收藏 -
Go debug.SetMemoryLimit 可以给 runtime 设置按字节计算的软内存目标。本文按值班手册说明适用环境、容器余量、运行时指标、持续 GC 判断和回滚方式。477 收藏 -
Go runtime/metrics 通过 All 返回当前支持的指标描述。本文演示怎样按 Name、Description、Kind 和 Cumulative 筛选指标,并安全创建 Sample 读取,兼顾不同 Go 版本的支持集合差异。374 收藏 -
Go math/big.Int.CmpAbs 专门比较两个大整数的绝对值,适合处理负数参与的幅度、阈值和排序判断。本文对比 Cmp 的有符号语义,说明返回值、零值、指针和迁移边界。413 收藏 -
Go atomic.Bool 适合维护读多写少的服务开关。本文从请求判断、管理侧切换、Swap 与 CompareAndSwap 的差异出发,说明零值、不可复制和不撤销已开始任务等边界。235 收藏 -
sync.Map.CompareAndDelete 可以在 key 的当前值仍等于旧值时删除映射项,适合处理并发缓存和临时索引清理。本文说明 bool 返回值、不可比较旧值、缺失键和与普通 Delete 的边界。135 收藏 -
用 sync.Cond 把空队列等待、生产者入队和消费者唤醒连起来,重点说明 Wait 必须放在条件循环中,以及 Signal、Broadcast 和退出处理的边界。228 收藏 -
Go multipart.Reader.NextPart 适合边读取边处理 multipart 请求体。本文说明如何解析 boundary、逐段区分普通字段和文件字段、正确处理 io.EOF,并用流式复制与文件名边界避免大文件一次性进入内存。372 收藏 -
Go url.URL.Port 只返回合法数字端口字符串。本文说明如何区分未设置端口与显式默认端口,并配合 URL.Hostname、net.SplitHostPort 正确处理域名、IPv4、IPv6 和业务默认端口。378 收藏 -
Go bytes.Reader 读取一部分内容后,可以用 Seek 回到开头、已保存的位置或相对偏移。本文用 io.SeekStart、io.SeekCurrent 和 io.SeekEnd 说明重复读取写法,并处理负位置、越过末尾和非法 whence。372 收藏 -
讲清 Go bufio.Reader.ReadByte 的 byte、error 返回约定,演示如何区分有效字节、io.EOF 与其他读取错误,并处理缓冲状态和 UnreadByte 边界。154 收藏 -
Go slices.Sorted 可以把 iter.Seq 中的有序元素收集成新的排序切片,适合整理 map 键、迭代器结果和需要稳定输出的集合。本文说明最小写法、复制边界、空输入、重复值以及 SortedFunc 与原地排序的选择。234 收藏 -
用 filepath.Rel 的 error 判断两个目录能否建立词法相对路径,说明同路径、子目录、绝对相对混用、Windows 卷名差异以及目录存在性边界。201 收藏 -
通过自动准备临时文件的Go示例,区分Glob有匹配、无匹配与模式语法错误,说明空切片处理和文件系统错误被忽略的限制。316 收藏 -
Go regexp.FindReaderSubmatchIndex 面向 io.RuneReader 返回首个整体匹配及各捕获组的字节区间。本文说明整数切片的成对下标、未匹配分组的负一标记、无匹配时的 nil 返回,以及流式 Reader 可能提前读取的边界。385 收藏