Go语言技术文章
-
Go 的 Header.Get 返回空字符串时,先检查是否用 Header.Set 或 Header.Add 写入、是否把请求头和响应头对象混用了,以及是否直接向 map 写入了非规范化键。118 收藏 -
用 Go 标准库 http.ServeContent 实现支持 Range 的文件下载接口,理解 200、206、416、If-Range 与 io.ReadSeeker 的边界。260 收藏 -
Go 使用 filepath.Ext 判断文件扩展名时,只会返回最终路径元素最后一个点开始的后缀。本文结合隐藏文件、多重后缀和大小写,给出可复用的判断规则。474 收藏 -
Golang · Go教程 | 1天前 | Excel · csv · Go教程 · 文件编码 · 报表导出 · Excel Go encoding/csv csv.Writer UTF-8 BOM CSV乱码
Go 的 encoding/csv 负责 CSV 字段和缓冲写入,但不会自动添加 UTF-8 BOM。本文说明如何在创建 csv.Writer 前写入 BOM,并正确处理 Flush、Error、CRLF 和 Excel 导入编码选择,解决中文 CSV 直接打开乱码问题。124 收藏 -
Golang · Go问答 | 1天前 | golang · 文件操作 · 权限管理 · Go问答 · os.OpenFile · Go 文件权限 chmod os.OpenFile umask Go问答
Go 使用 os.OpenFile 创建文件时,传入的 perm 不是最终权限。本文拆解 umask、文件是否已存在以及 Chmod 的关系,并给出一套可复用的排查与修正写法。486 收藏 -
Go 正则表达式可以用 (?P...) 声明命名捕获组,再通过 FindStringSubmatch 和 SubexpIndex 按字段名读取结果。本文说明数字分组的错位风险、命名分组写法,以及 nil、空分组和名称不存在时的处理方式。 434 收藏 -
Go 的 PathEscape 用于 URL 路径段,QueryEscape 用于查询参数值。两者对斜杠、加号和与号的处理不同,混用会导致路径层级变化或查询参数串位。本文用最小示例和 url.Values 说明选择方法。192 收藏 -
Go 的 string 下标按 UTF-8 字节计算,直接截取中文可能产生乱码。本文用 []rune、range 和 unicode/utf8 说明安全的按字符截取、计数与非法编码处理方式。240 收藏 -
Golang · Go问答 | 1天前 | go · 重定向 · http.Client · Microsoft Visual Studio cnwizards(c++程序开发包) Go HTTP重定向 post http.Client
Go http.Client 遇到 301、302、303 时会把后续 POST 改为 GET;本文解释状态码差异、GetBody 和 CheckRedirect 的用法,帮助你避免请求体悄悄丢失。133 收藏 -
Go benchmark 统计内存分配次数,最直接的方法是 go test -benchmem 或 b.ReportAllocs();需要代码读取时再使用 BenchmarkResult.AllocsPerOp 或 AllocsPerRun。219 收藏 -
Go 的 database/sql 不会统一改写占位符,? 还是 $1 取决于数据库驱动和后端语法。本文用 MySQL 与 PostgreSQL 对照示例,说明参数值、表名列名和跨数据库适配的边界。149 收藏 -
Go 表驱动测试中,把资源创建放进 t.Run,临时目录交给 t.TempDir,其他连接和文件用 t.Cleanup 注册回收,就能隔离用例并正确处理失败、跳过和并行子测试。233 收藏 -
Go 的 rows.Next 返回 false 不一定代表结果集正常读完,也可能是迭代期间发生了错误。本文用最小可用代码拆开 QueryContext、Scan、Err 和 Close 的判断边界,说明如何避免把超时、驱动错误误判为空结果。433 收藏 -
Go slog 统一记录请求 ID 和业务字段的实战方法:用 context 传递请求范围数据,用 Logger.With 和 WithGroup 分层复用稳定字段,并通过 InfoContext、LogAttrs 保持日志可检索且不串请求。337 收藏 -
普通 []byte(s) 转换得到可写字节切片,修改它不会回写原 string;中文按字符修改应使用 []rune,结果再按需转回 string。307 收藏