Go问答技术文章
-
Go slog Handler的方法允许并发调用。本文以日志封装迁移为例,说明派生对象、共享写入器、原子错误计数与业务字段的边界,给出委托JSONHandler的完整示例和回归场景。122 收藏 -
Go 使用 defer 和 recover 隔离一次 panic 时,还应在恢复现场调用 runtime/debug.Stack 保存调用堆栈。本文给出统一错误返回、日志上下文和 goroutine 边界的写法。138 收藏 -
Go fmt.Errorf 在格式串中包含多个 %w 时会保留多个错误分支。本文用自动化任务场景说明多错误关系、errors.Is 与 errors.As 的选择、nil 过滤、错误门禁和兼容边界。349 收藏 -
Go regexp.Regexp 可以用 MarshalText 导出正则文本,再用 UnmarshalText 恢复为可匹配对象。本文用配置字符串说明 JSON 保存、非法模式处理,以及 Longest 和 POSIX 状态不会随文本自动恢复的边界。370 收藏 -
Go 随机字节的标准base64输入可直接兼容真实CR/LF。本文给出带输入上限、32字节约束、错误丢弃和规范化输出的示例,说明Strict、空白字符、填充与认证边界。470 收藏 -
Go 验证码既要在生产环境使用安全随机源,又要让单元测试可重复。本文用一个可注入的随机整数接口,把 crypto/rand 与固定序列测试替身分开,并覆盖长度、字符表和错误处理边界。150 收藏 -
Go 中 crypto/rand 用于令牌、密钥和不可预测的随机值,math/rand 用于模拟、抽样、洗牌和可复现测试。本文用选择清单、代码示例和迁移边界说明两者如何分工。421 收藏 -
Go TLS Config.Clone 是浅克隆,修改共享切片、证书池或闭包状态仍可能引发竞态。本文给出 NextProtos 与 RootCAs 的隔离示例,说明使用后只读、回调依赖和配置切换边界。426 收藏 -
Go TLS 客户端应把域名写入 DNS SAN、IP 写入 IP SAN,并让 tls.Config.ServerName 与真实身份对齐。本文说明 CommonName 的兼容边界、SNI 与主机名校验的关系,以及如何避免用 InsecureSkipVerify 绕过问题。427 收藏 -
Go TLS 客户端自定义 CA 不生效,通常是证书池、RootCAs 或 HTTP Transport 没有接通。本文按证书输入、TLS 配置和请求客户端三层定位问题,并给出保留系统根证书的配置方式。168 收藏 -
Go 处理 tag=go&tag=web 这类重复查询参数时,应使用 url.Values 的切片模型:用 Add 追加、用 values[key] 读取全部值、用 ParseQuery 检查解析错误,并注意 Encode 的键名排序边界。163 收藏 -
Go 中普通表单字段读不到,常见原因不是字段名,而是 application/x-www-form-urlencoded 与 multipart/form-data 的请求体、Content-Type 和解析入口没有对应。本文按场景给出客户端与服务端的配对写法。418 收藏 -
Go http.Client.Timeout 不只限制建立连接,还覆盖重定向和响应体读取;本文从响应头已返回但 Body 仍超时的现象出发,给出整体超时与请求级超时的排查写法。338 收藏 -
Go archive/tar 读取 PAX 长路径时,直接使用 Reader.Next 返回的 Header.Name 即可;本文给出最小读取、内容消费和安全提取写法。177 收藏 -
Go archive/zip 写完条目后如果没有调用 Writer.Close,ZIP 末尾可能没有中央目录,读取端就会报归档损坏。本文说明 Close 的作用、正确收尾方式,以及如何保留 Close 和底层文件的真实错误。109 收藏