Go语言技术文章
-
Golang · Go问答 | 1天前 | time · go · 超时配置 · time.Duration · time.Duration Go超时 time.Second time.ParseDuration
Go 超时配置写成整数时,time.Duration 会按纳秒解释,1 并不是 1 秒。本文解释单位原因,给出固定值、整数配置和带单位字符串的正确写法,并整理超时排查清单。354 收藏 -
Go 标准库 flag.FlagSet 可以为每个子命令建立独立的参数集合。本文用 serve 和 check 示例说明命令分发、参数解析、位置参数校验及错误边界。201 收藏 -
Go 两个 time.Time 显示相同但用 == 比较不相等,通常是 Location 或 monotonic clock 不同。本文通过原创示例解释 Equal 与 == 的边界,并给出 map 键、数据库精度和业务日期的正确写法。382 收藏 -
Go 调用外部程序时,使用 Cmd.Stdout 和 Cmd.Stderr 可分别接收标准输出与标准错误;大输出或实时日志则用两条管道并行读取,并在读取完成后调用 Wait。262 收藏 -
讲清 Go 的 json.Marshal 对 map 键的支持边界:字符串、整数和 encoding.TextMarshaler,以及结构体、浮点数等键的替代方案。317 收藏 -
Go 可以用标准库 embed 在编译期把 HTML、CSS、JavaScript 等静态文件写入可执行程序,再通过 embed.FS、fs.Sub 和 http.FileServer 提供页面。本文给出完整写法,并说明目录、隐藏文件、模板和更新边界。446 收藏 -
Golang · Go问答 | 1天前 | 结构体 · Go问答 · encoding/json · JSON序列化 · Go json.Marshal omitempty 结构体转JSON 空对象 导出字段
Go 结构体转 JSON 得到 {},通常是字段未导出、json 标签明确忽略字段,或所有字段被 omitempty 按零值省略。本文用最小示例和检查清单说明如何快速定位并修复。374 收藏 -
Go 的 HTTP gzip 压缩不是给所有响应直接套一层 Writer,而是先协商 Accept-Encoding,再在首次写响应前设置 Content-Encoding 和 Vary,并正确关闭 gzip.Writer。233 收藏 -
Go 计算大文件 SHA256 时,不必把整个文件读入内存。本文用 sha256.New 配合 io.Copy 流式写入哈希状态,再说明错误边界、CopyBuffer、摘要格式和文件完整性校验的常见坑。121 收藏 -
在 Go 网页模板中安全输出表单、评论或搜索词,关键是使用 html/template,让普通字符串按所在 HTML 上下文自动转义,并谨慎处理 template.HTML。151 收藏 -
Go strings.Trim 的第二个参数是字符集合,不是完整子串。本文用边界示例说明 Trim、TrimPrefix、TrimSuffix 与 TrimSpace 的区别,避免裁剪协议前缀和业务标记时误删内容。350 收藏 -
Go recover 不能跨 goroutine 捕获 panic。本文用一个 panic-safe worker 小项目说明控制栈作用域、直接 deferred recover、error channel 与 WaitGroup 的正确组合。238 收藏 -
Golang · Go教程 | 1天前 | 标准库 · 数据库 · Go教程 · NullString · 数据读取 · Go database/sql sql.NullString sql.Null[string]
Go 使用 database/sql 查询可空字符串时,普通 string 不能直接接收 SQL NULL。本文通过 sql.NullString、Rows 多行扫描、Go 1.22 的 sql.Null[string] 和 COALESCE 对比,说明如何保留或转换 NULL 语义。152 收藏 -
Go defer 的函数参数在 defer 执行时就会求值保存,不是函数退出时才读取。本文用参数、闭包、LIFO 和命名返回值示例说明如何判断最终打印结果。468 收藏 -
Go 处理不带时区的日期字符串时,应使用 Asia/Shanghai 配合 time.ParseInLocation,再按需求调用 Unix 或 UnixMilli,避免直接 time.Parse 按 UTC 解释造成 8 小时偏差。261 收藏