Go教程技术文章
-
Go sync.Map.CompareAndSwap 会先比较 key 对应的旧值,只有当前值与 old 相等时才替换为 new。本文用状态更新示例说明返回值、并发重试、可比较类型和与 Store、Swap 的区别。426 收藏 -
sync.Pool 适合复用可丢弃的临时对象,但不适合保存业务状态或稳定资源。本文从对象生命周期、New/Get/Put 闭环、清空语义、容量风险和基准数据五个角度,判断一个对象是否真的值得池化。370 收藏 -
Go netip.Prefix.Bits 直接返回 CIDR 前缀长度,合法范围取决于 IPv4 或 IPv6 地址族;无效 Prefix 返回 -1。本文用 ParsePrefix、PrefixFrom 和 Masked 说明读取、校验与地址规范化的边界。188 收藏 -
Go math/rand/v2.ChaCha8 使用固定的 [32]byte 种子即可复现伪随机序列。本文说明 NewChaCha8、Seed、Uint64、Read 的配合方式,并区分测试回放与 crypto/rand 的安全用途。387 收藏 -
Go big.Int.SetString 解析大整数时需明确进制并检查成功标志。本文说明十进制与自动进制的差异、失败时接收者状态,以及临时对象提交和独立副本的用法。228 收藏 -
time.LoadLocation 读取的是 IANA 时区数据库,不是简单的小时偏移。本文说明 ZONEINFO、系统时区目录、GOROOT 与 time/tzdata 的关系,并给出精简容器中的错误处理和部署选择。263 收藏 -
Go 的 time.Date 遇到夏令时重复或缺失的当地钟点时,不保证选择哪一侧时区。本文区分墙上时间与绝对时刻,说明如何显式保留偏移、制定消歧策略,并避免把规范化结果误当成用户意图。371 收藏 -
Go regexp.QuoteMeta 可以把用户输入中的正则元字符转成字面量。本文用固定表达式加用户片段的场景,说明安全拼接、错误处理和边界取舍。141 收藏 -
Go filepath.IsLocal 只判断路径的词法局部性,不保证符号链接、文件存在或访问权限安全。本文说明原始输入校验、Clean 与 Join 的使用顺序及业务边界。462 收藏 -
Go 的 path.Match 适合匹配使用正斜杠分隔的资源名。本文用最小示例说明 *、?、字符类、转义、完整匹配和 ErrBadPattern 的边界,并给出生产配置检查方法。417 收藏 -
Go 中 len(string) 统计的是 UTF-8 字节数,而 unicode/utf8.RuneCountInString 统计的是 rune 数。本文用 Go 示例拆开两者的差异,并说明 []byte、非法 UTF-8 和字符限制场景该怎样选择。424 收藏 -
Go strings.FieldsFunc 通过 rune 判定函数按自定义规则切分文本,连续分隔符会合并,首尾分隔符会被丢弃,结果字段始终非空。本文用原创示例说明多种分隔符、Unicode 空白以及它和 strings.Split 的边界差异。136 收藏 -
Go 字符串切片可能继续关联原始大字符串,导致只保留一小段文本时仍占住更大的底层存储。本文说明 strings.Clone 的适用边界、生命周期放置位置、空字符串行为和复制成本,帮助你只在有内存保留证据时做独立复制。176 收藏 -
Go bytes.Buffer.WriteTo 会把缓冲区的未读内容写入 io.Writer,并返回已经写出的字节数和错误。本文用最小示例说明完整写入、短写入、错误保留和发布前检查,帮助你避免重复发送或误判成功。464 收藏 -
Go io.NewSectionReader 将 ReaderAt 限制在指定偏移和长度内,掌握 Read、ReadAt、Seek、Size 与 Outer 的边界语义。442 收藏