Go语言技术文章
-
用 testing.F 和 f.Add 写 Go fuzz 测试时,随机字节并不会自动符合业务格式。本文演示如何保留长度与位置变化,把输入映射到合法字符域,并拆分非法输入测试。210 收藏 -
Go 的 encoding/json 中,omitempty 不能按结构体零值隐藏普通 struct;本文解释原因,并给出指针与 omitzero 的选择方法。277 收藏 -
Go 的 testing.T.Setenv 会修改整个测试进程的环境变量。本文说明它为何不能用于并行测试,并给出串行清理、显式配置和子进程隔离的选择方法。388 收藏 -
Go 的 json.Unmarshal 复用结构体时,JSON 缺失字段不会自动清零,旧指针可能因此残留。本文用最小示例区分缺失、null 与对象合并,并给出安全处理方式。404 收藏 -
介绍 Go testing.T Cleanup 的登记方式、后进先出顺序、父子测试作用域和并行测试中的资源清理边界。127 收藏 -
Golang · Go问答 | 31分钟前 | HTTP · go · ResponseWriter · ServeHTTP · Go header WriteHeader ResponseWriter ServeHTTP
Go 的 ResponseWriter 会在首个 Write 或 WriteHeader 时提交响应头,之后再修改 Header 或状态码通常不会生效。本文用 ServeHTTP 示例说明正确顺序、错误分支和特殊边界。107 收藏 -
Go database/sql 事务中,业务语句失败、Rollback 失败和 Commit 失败对应不同的处理边界。本文用一段可复用代码说明如何保留原始错误、避免重复回滚,并解释提交失败后为什么要先按幂等键核对状态。123 收藏 -
Go 的 http.Server.Shutdown 返回错误时,不能只看 err != nil。本文区分 Shutdown、Serve 与 context 的错误语义,用 errors.Is 判断超时,并给出活动请求、长连接和强制退出的处理清单。372 收藏 -
sql.Named 能保留参数的业务名称,但不会替不同驱动改写 SQL 占位符。本文用 database/sql、MySQL、PostgreSQL 和 pgx 的边界说明命名参数如何落地,避免把参数语义和占位符语法混为一谈。479 收藏 -
Go 的 Response.Body 只 Close 不读到 EOF 时,HTTP/1.x 连接可能无法复用。本文按响应大小给出读取、关闭和排查 Transport 的实用写法。301 收藏 -
用 Go database/sql 的 sql.NullString 处理可空文本,区分 SQL NULL 与空字符串,并覆盖单行读取、多行扫描和写回数据库。229 收藏 -
Go 的 CheckRedirect 返回普通错误时,上一跳 Response 可能仍然返回,但 Body 已被关闭。本文解释如何使用 ErrUseLastResponse 保留响应并安全读取正文。331 收藏 -
Go html/template 会按 HTML、属性和 URL 上下文自动转义用户值。本文用固定属性模板说明 title、data-*、href 的安全写法,解释危险协议、事件属性和 template.HTML 的信任边界。383 收藏 -
Golang · Go问答 | 1小时前 | go · HTTP客户端 · http.NewRequest · ContentLength · Go http.NewRequest ContentLength nil Body http.NoBody
Go http.NewRequest 传入 nil Body 后 ContentLength 为零是正常语义:nil 表示没有请求体,零值不能单独证明 Body 一定为空。本文对比 nil、http.NoBody、已知长度 Reader 和未知 Reader 的边界。238 收藏 -
Go 1.22 起,http.ServeMux 支持在同一模式中注册 HTTP 方法、路径和通配符。本文用用户接口示例说明 PathValue、最具体匹配、冲突 panic、405 以及旧项目兼容边界。487 收藏