Go问答技术文章
-
URL.Redacted 会复制 URL 并把 User.Username 与密码替换成占位符,适合记录请求地址,但不能代替完整日志脱敏。本文用 Go 代码说明调用链、凭据边界和常见误区。261 收藏 -
Go 包初始化不会把文件名当成业务顺序协议。本文区分包级变量依赖、同包多文件呈现顺序和 init 调用边界,并给出 go list 排查与显式 Setup 重构方法。261 收藏 -
Go 的 json.UnmarshalJSON 只负责输入解析,不能改变 omitempty 的输出规则。默认 encoding/json 中,零值结构体仍是可编码对象;要隐藏可选嵌套对象,应使用 nil 指针,并按接口契约区分缺失、空对象和显式零值。261 收藏 -
Go 使用 net/http 访问 IPv6 地址时,URL 格式错误通常来自缺少方括号或直接拼接 host:port。本文用 net.JoinHostPort 和 url.URL 说明正确构造方式,并区分格式、解析和连接错误。261 收藏 -
Go net/http读取请求体超时应分层配置:服务器限制请求头,处理器按接口设置请求体截止时间,再配合MaxBytesReader限制体积。本文给出可复用写法和错误边界。261 收藏 -
Go Decoder.DisallowUnknownFields 只保证遇到未知结构体字段时返回错误,并不负责收集全部错误。本文解释首个错误的保存机制,并给出严格解码与顶层批量提示方案。261 收藏 -
Go 的 encoding/json 将数字解码到 interface{} 时默认使用 float64。本文从类型断言失败和大整数精度风险出发,说明 UseNumber、json.Number 与具体结构体的选择。260 收藏 -
Go 文件移动应优先使用 os.Rename;遇到跨文件系统错误时,在目标目录创建临时文件复制、Sync、关闭后再 Rename 提交,并正确处理源文件清理失败。260 收藏 -
解释 Go slog.WithGroup 空组名的真实行为,区分无操作、命名组与空键 Group 的内联规则,并给出自定义 Handler 和字段冲突的处理方式。260 收藏 -
使用 Go exec.Cmd.StdoutPipe 时,先 Wait 后读取可能在长输出场景阻塞。文章解释管道容量、子进程写端与父进程读端的关系,并给出单管道、双管道和直接缓冲输出的正确顺序。259 收藏 -
Go 泛型调用遇到 untyped constant 时,类型参数通常按默认类型推断,赋值左侧不会反向改变 P。本文用 MyInt 示例拆开推断、约束和显式转换的边界。259 收藏 -
Go 的 copy 可以安全处理共享底层数组的重叠切片。本文从源切片、目标切片和复制数量入手,说明切片移动、扩容复制以及三索引切片限制之间的区别。259 收藏 -
Go pprof.StartCPUProfile 如果停止太晚,会把无关阶段纳入采样窗口,并让结束时的 profile 写入等待变长。本文用明确的开始、停止和关闭顺序说明如何控制 CPU 剖面范围。259 收藏 -
Go embed 使用目录模式时会默认跳过名称以点号或下划线开头的文件。本文对比 assets、assets/* 与 all:assets 的匹配边界,并给出 embed.FS 读取、构建检查和安全排查方法。259 收藏 -
Go io/fs返回的错误通常带有PathError上下文,使用errors.Is区分文件不存在、权限拒绝和非法路径,再把每类错误映射到明确的业务动作。259 收藏