Go问答技术文章
-
Go 类型推断会从泛型函数的普通实参、赋值上下文和类型约束中补全类型参数。本文用命名切片、无类型常量和部分显式参数说明推断路径,并整理泛型类型不能省略参数的边界。364 收藏 -
Go net.Dialer 的 Timeout 是相对拨号开始的最长时长,Deadline 是绝对截止时刻;二者和 Context 截止时间取最早值。本文用可复用的 DialContext 示例说明设置方式、多地址解析和超时判断。364 收藏 -
Go 的 encoding/xml 没有 xmlattr 关键字,XML 属性应使用 xml:"name,attr" 映射到导出字段。本文说明属性读取、嵌套元素、写回 XML、未知属性接收和常见空值排查方法。361 收藏 -
Go 的 xmlattr 本质上是 encoding/xml 结构体标签里的 attr 选项。属性读不到或输出名称不对时,应依次核对属性名、字段可导出性、XMLName 和命名空间,再用 Marshal/Unmarshal 双向验证。360 收藏 -
Golang · Go问答 | 4天前 | 容器 · 性能排查 · Go问答 · 运行时 · go GOMAXPROCS 容器 CPU 配额 runtime.NumCPU cgroup cpu.max Kubernetes CPU limit
Go 容器里的 GOMAXPROCS 不一定等于宿主机 CPU 数。本文从 CPU limit、CPU request 和运行时实际值入手,给出 Go 进程内与 cgroup 两侧的观察方法,并说明 Go 1.25+ 的自动默认、手动覆盖和复查边界。360 收藏 -
解释 Go defer 调用方法时接收者和参数的求值时机,比较值接收者、指针接收者与闭包写法,帮助排查为什么延迟日志读到旧值。359 收藏 -
Golang · Go问答 | 2天前 | database/sql · Go database/sql Rows Go Rows Scan字段顺序 Go SQL查询列顺序 Go rows.Columns排查 Go rows.Err错误处理
Go database/sql 使用 Rows 时,Scan 的目标参数必须按 SELECT 返回列的顺序排列。本文从列数、列名、类型和 NULL 四个方向排查错位,并补上 Rows 的 Close 与 Err 收尾检查。359 收藏 -
Go 没有 panicreturn 关键字,常见写法是用 defer 和 recover 捕获包内 panic,再改写命名返回值中的 error。本文用原创代码说明恢复边界、显式 return 和常见排查点。358 收藏 -
Go fuzz corpus 报格式错误时,先定位 testdata/fuzz 中的具体文件,再核对 go test fuzz v1、参数数量、类型与顺序,最后用单条语料完成最小复现。357 收藏 -
Go 普通 map 不能直接承受并发读写,运行时 panic 只是可能出现的表现。本文用一个小缓存说明 map 并发边界,比较 RWMutex 与 sync.Map,并把 go test -race 放进回归验收。354 收藏 -
Go map 的 range 顺序不保证稳定。本文用排序后的键值表示和顺序无关断言,说明如何写出可重复、能覆盖边界的 map 测试。352 收藏 -
http.Client.Timeout 限制的是一次请求从连接到读取响应体的总时长,不会替调用方管理 Response.Body。本文区分 Close、读到 EOF、连接复用和慢流场景,给出可直接套用的清理写法。352 收藏 -
Golang · Go问答 | 5天前 | 错误处理 · net/http · HTTP客户端 · Go问答 · Go clienttimeout http.Client Timeout Go 请求超时 Go url.Error 超时 Go HTTP 客户端时限
Go 的 clienttimeout 通常对应 http.Client.Timeout。本文说明它覆盖的请求范围、如何从 client.Do 返回值中判断超时,以及它与 context 和 Transport 分段时限的区别。351 收藏 -
Go 的 initialization cycle 不是运行时偶发错误,而是包级变量的依赖无法排出合法初始化顺序。本文用直接引用、函数体传递引用和三种拆环方案说明如何定位与修复。350 收藏 -
Go select 同时命中多个 case 时不会按源码顺序固定执行,而是在可通信的 case 中做均匀伪随机选择。本文用最小示例解释规则,并给出优先级、取消和测试的确定性处理方式。349 收藏