Go语言技术文章
-
os.File.ReadFrom 不只是把 io.Reader 读进文件:它会先检查文件状态,再按平台选择专用路径或通用读取循环。本文用 io.Copy、文件偏移和短写场景说明如何判断结果。137 收藏 -
Go 1.27 新增 bytes.CutLast,用一个 found 布尔值和 before、after 两个切片处理最后分隔符;本文对照 LastIndex 说明未找到分隔符时的返回边界与迁移写法。137 收藏 -
Go 交叉编译后的二进制运行时报架构错误时,先核对 GOOS、GOARCH 与产物格式,再区分纯 Go、cgo、动态加载器和目标机器不匹配,避免只改一个编译参数。137 收藏 -
SetMaxOpenConns(1) 会把所有需要数据库连接的并发操作压到单车道,吞吐下降通常来自连接获取等待。本文用 DBStats 区分排队与 SQL 慢,并给出连接池调参方法。137 收藏 -
Go 的 0644 是 Unix 权限表达式。Windows 上 os.Chmod 只使用 0o200 位控制只读属性,用户和组级访问控制要交给 Windows ACL。137 收藏 -
Golang · Go问答 | 1个月前 | 基准测试 · Go问答 · Go string []byte map key Go map key 分配 string 转 []byte 性能 Go AllocsPerRun Go map 性能评估
Go 的 []byte 不能直接作为 map key。本文拆分 string 转换、map 查找和写入三个成本,用 AllocsPerRun 与基准测试建立可复用的分配评估方法。137 收藏 -
Go strconv.Atoi 已经把字符串按当前平台 int 宽度解析。遇到溢出或非法文本时,应先检查 error,再做业务范围判断,最后才使用转换结果。137 收藏 -
runtime/secret 不是新的秘密字节类型,而是敏感计算的生命周期边界。本文从输入所有权、非敏感输出、错误模型、堆分配和平台兼容解释它与普通 byte 切片该如何分工。137 收藏 -
Go 的 exec.CommandContext 默认会在上下文超时后调用 Cmd.Cancel 并 Kill 子进程,但生产任务常需要更温和、可观测的退出策略。本文说明如何设计自定义 Cancel,处理 os.ErrProcessDone、WaitDelay、管道收尾和错误归因。137 收藏 -
Go 创建多层目录时,os.Mkdir 只处理最后一级,os.MkdirAll 会补齐必要父目录。本文还解释 perm、umask、已存在目录与同名文件错误的处理边界。136 收藏 -
用 go generate 把源定义、生成器和重复 Go 代码连接起来,掌握指令格式、生成文件标记、执行检查与失败回滚。136 收藏 -
使用 archive/tar 解包时,先用 filepath.IsLocal 拒绝绝对路径和 .. 条目,再按 TypeDir 创建目录、按普通文件条目写入内容,保留 tar 原有目录结构。136 收藏 -
Go database/sql 中,rows.Close 后仍可调用 rows.Err。本文区分迭代错误、扫描错误和驱动关闭错误,给出读取型查询与提前关闭时不丢错的写法。136 收藏 -
Go testing.F 找不到失败语料时,先看 testdata/fuzz/FuzzName,再区分只读包回退到 GOCACHE/fuzz 的情况,并用 FuzzName/hash 精确重跑。136 收藏 -
Go reflect 中 CanAddr 与 CanSet 不是一回事。本文用 ValueOf、Elem、结构体字段、切片元素和 map 索引拆解 Set panic,并给出可复查的安全写入方法。136 收藏