Go教程技术文章
-
围绕 Go os.Open 读取配置的场景,说明如何在打开成功后立即绑定 defer Close,处理读取与解码错误,并避免循环中的文件句柄延迟释放。410 收藏 -
filepath.EvalSymlinks 会逐层解析路径中的符号链接并清理结果。本文给出最小用法、多层相对链接示例、断链和链接环错误处理,以及把最终路径限制在受信根目录内的检查方法。410 收藏 -
Go 1.24 及以上通过 http.Transport.Protocols 限定客户端使用 HTTP/1、HTTP/2 或明文 h2c,并用 Response.Proto 验证实际协商结果。410 收藏 -
Go billy 的 memfs 可以通过 Filesystem.Chroot 把 workspace 变成相对路径工作根。本文用最小 Go 示例说明如何创建、读写文件,并处理不存在目录、越界路径和 v5/v6 导入差异。410 收藏 -
Go 的 filepath.Glob 只会把模式语法错误报告为 ErrBadPattern,无匹配通常是 nil、nil,目录读取等文件系统错误则会被忽略。本文从批处理中的误判现场出发,讲清三种结果如何区分、如何复现和怎样设计错误分支。410 收藏 -
用 Go 标准库 maps.Clone 复制 map,区分 map 容器独立与切片等 value 仍共享底层数据的边界,并给出可验证的复制方案。410 收藏 -
Go embed.FS 默认保留嵌入目录的完整路径;用 io/fs 的 fs.Sub 可以把某个子目录包装成可复用的 fs.FS 根,让模板、静态资源和通用读取代码只处理根内相对路径。本文说明初始化、下游接入、路径边界和回滚方式。410 收藏 -
Golang · Go教程 | 1星期前 | go · 数据库 · database/sql · Go database/sql Go Rows.NextResultSet Go 多结果集 Go Rows.Err
围绕 database/sql.Rows.NextResultSet 讲清多结果集的切换、每个结果集的扫描顺序,以及 Rows.Err 如何区分正常结束和迭代错误。410 收藏 -
Go strings.CutSuffix 用一个调用同时返回去掉固定后缀后的字符串和 found 状态,适合拆分文件扩展名。本文说明匹配、未匹配、空后缀和 Go 版本边界。410 收藏 -
Go 终端表格混排中文和英文时,不能用字节数或 rune 数量代替显示列宽。本文用 go-runewidth.Truncate 按单元格宽度截断,并说明尾标记预算、StringWidth、Wrap 与 Condition 的使用边界。410 收藏 -
用 Go io.Copy 处理上传、代理和文件转存时,先限制输入边界,再利用 ReaderFrom 的快路径,最后用可复现基准确认吞吐与内存变化。409 收藏 -
Go 1.27 为 compile、link、asm、cgo、cover、pack 等工具加入 response file(@file)参数解析。本文用一个构建参数过长的场景,说明文件格式、引号换行边界、适用工具和迁移核对点。409 收藏 -
Go modules 中 replace 写了却仍下载远程模块时,按主模块、require、替换版本和 go list -m -json 结果逐层定位真实来源。409 收藏 -
Go 的 slices.SortStableFunc 会保留比较器判定为相等的元素在原切片中的相对顺序。本文用带 score 和 id 的记录演示比较器写法、稳定性测试、tie-breaker 的影响,以及原地排序和复制排序的选择。409 收藏 -
用 go test -benchmem 和 testing.B.ReportAllocs 读懂 B/op、allocs/op,再通过子基准、计时边界、逃逸分析与内存剖析定位 Go 基准中的临时对象来源。409 收藏