Go语言技术文章
-
strings.EqualFold 按 Unicode 简单大小写折叠直接判断两个 UTF-8 字符串,而 strings.ToLower 是把字符单向映射成小写。本文用希腊 Sigma、德语 ß 和组合字符说明两者差异、适用场景与工程边界。229 收藏 -
Go 1.23 为 reflect.Value 增加了 Seq2,可把 map 统一为 key/value 序列,也能遍历数组、切片、字符串和双值迭代函数。本文从一次遗漏 map 值的故障出发,说明 CanSeq2 判断、各类型双值语义和提前停止边界。469 收藏 -
Go 的 string 按字节存储,直接切片可能把多字节 UTF-8 字符截在中间,产生非法编码。本文用可复现代码说明原因,并给出按 rune 截取与按合法字节边界截取的选择方法。494 收藏 -
Go 1.22 新增 reflect.TypeFor[T](),可以在没有现成值时直接取得泛型参数 T 对应的 reflect.Type。本文通过最小示例、接口类型对比和泛型注册表说明 TypeFor 与 TypeOf 的区别及使用边界。343 收藏 -
Go 内置 copy 对源和目标切片的重叠有语言规范保证,复制结果不受内存区间是否重叠影响。本文给出切片左移删除、右移插入的可靠写法,并说明返回数量、容量和并发边界。283 收藏 -
Go time.Duration.Abs 遇到 math.MinInt64 时会返回 math.MaxInt64。本文解释 int64 纳秒范围、唯一不对称边界,以及超时和重试场景下的业务上限检查方法。427 收藏 -
本文解释 Go 删除切片元素后大对象仍可能被底层数组尾部指针保持可达的原因,对比手动 clear 与 Go 1.22+ slices.Delete,并说明别名切片、GC 时机、堆复用和 RSS 判断边界。174 收藏 -
Golang · Go教程 | 1星期前 | go · 时区 · 时间处理 · 本地时间 time.LoadLocation 时区解析 Go time.ParseInLocation Asia/Shanghai
本文解释 Go 的 time.ParseInLocation 如何把不带时区的本地墙上时间按指定 Location 解析,比较 time.Parse 与 Time.In,并说明 IANA 时区加载、RFC3339、夏令时边界和 UTC 存储做法。170 收藏 -
Go append 是否复用底层数组取决于容量。本文用 len、cap 和独立复制示例说明新旧切片互相影响的原因,并给出需要隔离时的处理方案。465 收藏 -
Go 1.24 的 time.Time.AppendText 可以把 RFC 3339 时间直接追加到复用的 []byte。本文说明如何在循环和写入路径中复用缓冲区、处理错误与字符串转换,并用 benchmark 判断分配是否真正下降。264 收藏 -
Go 的 float64 虽然能作为 map 键,但 NaN 与自身也不相等,导致查找和 delete 无法重新命中已写入条目。本文演示问题,并给出入口拦截、clear、过滤重建和稳定键编码方案。332 收藏 -
big.Int.FillBytes 会把绝对值写成左侧补零的大端固定长度字节串,并返回原缓冲区;容量不足时会 panic。本文给出最小用法、BitLen 容量检查、零值与负数边界以及复用测试。120 收藏 -
Go 规范明确规定 map 遍历顺序未指定,同一 map 的多次 range 也不保证一致。需要稳定输出时,应先收集键并排序,再按键读取值;测试则按目标选择 maps.Equal 或确定性序列化。455 收藏 -
Go math/big.Float 应在写入数值前调用 SetPrec 设置二进制精度,再用字符串或有理数输入并让目标值承接运算;文中同时说明 Prec、Mode、Acc 的判断方法。313 收藏 -
Go 普通 map 并发读写时,runtime 的 map 专用检查可能先触发 fatal,而 race detector 只有在使用 -race 构建且冲突路径实际执行时才会报告。本文给出识别、止血、定位和修复方法。218 收藏