Go语言技术文章
-
go install 带版本后仍调用旧工具,应分开确认版本来源、GOBIN 安装落点与 PATH 命令入口。本文说明同名文件、别名、终端环境和二进制模块信息的排查方法。251 收藏 -
用 slog.Level.UnmarshalText 解析 Go 日志级别配置,区分空值默认、非法值错误和数值偏移,给出可复用的配置加载函数。475 收藏 -
Go 文件上传时不要只相信扩展名或客户端 Content-Type。本文说明 http.DetectContentType 最多读取前 512 字节的工作边界,给出保留完整文件流的实现,并演示如何在 multipart 文件 Part 上接入允许类型判断。231 收藏 -
Go pprof HTTP 地址打开为空时,先区分服务、路径和 mux 三层问题。本文从 net/http/pprof 的匿名导入讲起,说明 DefaultServeMux 与自建 ServeMux 的注册差异,并给出目录页、heap 和 CPU profile 的排查顺序。329 收藏 -
Go database/sql 的连接等待不等于请求超时。本文用分阶段计时结合 DBStats 增量,区分获取连接与操作阶段失败,说明 MaxOpenConns、共享统计和上下文预算的判断边界。470 收藏 -
Golang · Go问答 | 2星期前 | 标准库 · 错误处理 · go · 数据库 · Go database/sql sql.ErrNoRows QueryRow QueryRowContext
QueryRow 找不到记录并不是 QueryRow 立即报错,而是把错误延迟到 Scan。本文说明 sql.ErrNoRows 的来源,比较 QueryRow 与 Query 的适用场景,并给出仓储层错误转换和边界处理方式。186 收藏 -
Go 上传请求在请求头发出后长时间没有发送请求体,通常要先检查 Expect: 100-continue 与 http.Transport.ExpectContinueTimeout,而不是直接调大响应头超时。本文按服务器响应、零值语义和请求上下文给出排查与配置取舍。109 收藏 -
Go HTTP 请求变慢时,httptrace.ClientTrace 可以把 DNS、连接、TLS、写请求和首字节等阶段拆开记录。本文给出标准库用法、复用连接判断、回调缺失分析和超时排查边界。437 收藏 -
Go fmt 出现 %!s 时,应先区分类型不匹配、参数缺失及自定义格式化异常。本文对比 %s、%d、%v 等动词,给出混合字段日志写法与参数顺序排查要点。377 收藏 -
Go regexp.Compile 失败时,关键不是把错误吞掉,而是把正则来源、配置字段和底层语法错误一起带回启动流程。本文结合 MustCompile 的适用边界,给出代码常量、环境变量和配置文件的选择方法。323 收藏 -
Go html/template 会按 URL 上下文过滤动态 javascript: 协议,并可能输出 #ZgotmplZ。本文解释过滤原因、template.URL 的安全边界,以及把点击行为改成普通链接或严格 allowlist 的做法。450 收藏 -
Go template Execute 返回错误不会撤销已写内容。本文通过请求独立缓冲隔离模板失败,说明 HTTP 状态提交、渲染与发送错误分类,以及缓冲不能保证网络原子送达的限制。233 收藏 -
Go template 的 missingkey=error 只在执行阶段读取缺失 map 键时生效。本文从 Parse、Option、Execute 和 ExecuteTemplate 的关系排查为什么没有报错,并给出接住执行错误的修复写法。115 收藏 -
Go 使用 go:embed 报 pattern no matching files 时,重点检查声明文件所在包目录、模式拼写、模块边界和构建标签,而不是运行时工作目录。本文给出一套能定位到具体文件的排查方法。262 收藏 -
Go 的 os.ReadDir 会按文件名排序,而 File.ReadDir 按目录顺序读取。本文解释两者差异、字典序与自然排序的边界,以及 n 参数和 io.EOF 的处理方式。183 收藏