Go教程技术文章
-
gofmt 在不同 CPU 架构上出现列对齐差异,通常是格式化器对齐决策的实现差异。本文说明 Go 1.27 的修复范围,并给出统一工具链、提交检查和升级处理方法。142 收藏 -
Go strings.IndexRune 返回的是 Unicode 字符在 UTF-8 字符串中的首个字节偏移,而不是字符序号。本文说明 -1、0、utf8.RuneError 和非法 UTF-8 的边界,并给出安全切片与删除多字节字符的写法。142 收藏 -
使用 Go AST 重写源码时,astutil.DeleteImport 可以按导入路径删除 import 声明。本文说明 parser.ParseFile、token.FileSet、format.Node 的配合方式,以及返回值、别名和重复导入边界。142 收藏 -
Go 的 time.Duration 底层按纳秒计数,外部配置却常用毫秒。本文用单一转换入口区分裸整数、time.Duration 和字符串时长,说明定时器、超时参数、零值、负值与溢出边界,避免单位混用导致等待时间异常。142 收藏 -
用 pprof.Labels 与 pprof.Do 为实际任务建立租户标签作用域,给出 CPU 采样与筛选示例,说明工作池传播、子协程继承及采样归属的限制。142 收藏 -
在 Go 反射代码里,reflect.Value.Kind 用来读取值的基础类别,但 Invalid、命名类型和 nil 值很容易混在一起。本文从一个反射字段分派场景出发,说明 Kind 的安全入口、与 Type 的分工、常见分支和边界取舍。142 收藏 -
strconv.ParseBool 只负责标准布尔文本,配置中的 yes/no 需要在入口处做显式兼容映射。本文说明接受范围、错误边界和一段可复用的 Go 配置解析写法。141 收藏 -
Go regexp.QuoteMeta 可以把用户输入中的正则元字符转成字面量。本文用固定表达式加用户片段的场景,说明安全拼接、错误处理和边界取舍。141 收藏 -
用 Go net/http Cookie 配置 SameSite 与 MaxAge,区分跨站发送策略、存活秒数和删除语义。141 收藏 -
Go os.CopyFS 可以把 embed.FS 或其他 fs.FS 的目录树复制到磁盘,但不会覆盖已有文件。本文围绕空输入、fs.Sub、fs.ErrExist 和首个底层错误,整理一套能保留错误边界的复制写法。141 收藏 -
Go 源码位置查询需要先定位最内层作用域,再沿父链查找可见声明。通过同名变量示例说明 LookupParent、位置参数与 Info.Uses 的分工和接入边界。141 收藏 -
Go 的 sort.Slice 不保证相等元素保持原始顺序,sort.SliceStable 会保留这种相对顺序。本文从业务语义、多关键字排序和基准测试三个角度说明何时值得使用稳定排序,以及它的原地修改和比较函数边界。141 收藏 -
Go 的 slices.Compact 只合并连续相等元素,不会自动过滤空字符串或零值。本文用 nil、空切片、业务校验和 CompactFunc 说明异常分支及尾部清零的处理方式。140 收藏 -
看到 go.mod 中的 // indirect 不要直接批量删除。本文结合 go mod graph、go mod why -m 与 go mod tidy 差异,说明如何区分传递依赖、测试依赖和版本选择影响,判断间接依赖是否仍需保留。140 收藏 -
syscall.Exec 不是启动一个子进程,而是把当前进程映像替换成目标程序。本文从 argv、环境数组和成功不返回三个边界出发,给出 Unix 下的最小写法与兼容建议。139 收藏