Go语言技术文章
-
Go range 遍历结构体切片时,迭代变量拿到的是元素值副本;本文对比索引、指针切片和 map 的写法,说明怎样让字段修改真正写回原数据。478 收藏 -
Go 中使用 filepath.EvalSymlinks 沿路径解析符号链接,得到当前文件系统中的实际目标路径;同时处理相对路径、断链、循环链接、权限错误以及解析后的访问边界。381 收藏 -
Golang · Go问答 | 1天前 | map · 零值 · Go问答 · 运行时错误 · Go make nil map map初始化 assignment to entry in nil map
Go nil map 可以读取、len 和 range,却不能给元素赋值。本文解释 nil map 与空 map 的边界,演示 make 初始化,并排查函数返回值和结构体字段中的初始化遗漏。236 收藏 -
Go 用 filepath.Glob 按通配符查找文件时,无匹配不是异常,非法模式才需要处理 error。本文从最小写法出发,说明 filepath.Join、空切片、ErrBadPattern、路径分隔符和递归查找之间的边界。429 收藏 -
Go 的 map 元素不是可寻址变量,不能直接给 map 中结构体的字段赋值。本文解释编译错误原因,并给出读改写回、指针值与并发检查的实用写法。290 收藏 -
Go 1.24 引入的 os.Root 可以把文件操作固定在指定目录树内。本文用一个 HTTP 文件服务示例说明 filepath.Localize、Root.Open、目录判断、错误响应和平台限制。128 收藏 -
slices.Clone 对二维切片只做浅拷贝:外层容器独立,但内层切片仍可能共享元素数组。本文用反例说明原因,并给出保留 nil 行语义的逐行深拷贝写法。406 收藏 -
Go 配置文件不要直接截断原文件,推荐先在同目录临时文件中写完并同步,再用 os.Rename 替换目标文件,同时处理关闭、清理、并发和跨平台边界。450 收藏 -
slices.Compact 只会合并连续重复元素,不是全局去重函数。本文用 Go 示例说明如何识别顺序边界、何时先排序,以及如何使用 CompactFunc。385 收藏 -
自定义集合不必暴露内部切片或 map,也能直接支持 for range。做法是让 All 方法返回 iter.Seq[T],在闭包里调用 yield,并把 false 当作停止信号。本文用一个泛型集合说明接口形状、提前 break 和重复遍历的边界。250 收藏 -
Go 的 os.CreateTemp 返回时文件仍处于打开状态。Windows 上把路径交给另一个程序前,必须先关闭 Go 文件句柄,再等待外部程序完成后清理临时文件。351 收藏 -
Go 统计整数二进制中 1 的数量,直接使用 math/bits 的 OnesCount 系列即可。本文按 uint、uint32、uint64 的宽度说明函数选择,演示切片汇总,并解释有符号整数转换时的补码边界。402 收藏 -
Go 创建多层目录时,os.Mkdir 只处理最后一级,os.MkdirAll 会补齐必要父目录。本文还解释 perm、umask、已存在目录与同名文件错误的处理边界。136 收藏 -
Go 分数运算使用 math/big.Rat 保留任意精度的分子和分母,结合 SetString、Add、Mul、Quo 与 Cmp 完成精确计算,最后再用 FloatString 输出小数。344 收藏 -
Go 追加日志却清空原文件,通常是 OpenFile 组合了 O_TRUNC。本文解释 O_APPEND、O_CREATE、O_TRUNC 的区别,并给出可复用的安全追加写法与并发边界。292 收藏