Go语言技术文章
-
Go 拉取私有模块时,GOPROXY、GOPRIVATE、GONOPROXY 与 GONOSUMDB 的职责不同。本文按直连仓库和私有代理两种架构给出配置,并用回退规则定位 404、403 与 sumdb 校验错误。298 收藏 -
go build -trimpath 会移除可执行文件中的本机目录,但不会删除函数名、行号和调用栈。本文解释 runtime.Caller 如何读取裁剪后的逻辑文件名,并给出生产构建、本地调试与源码版本关联的选择方法。298 收藏 -
Go 的 http.Client 默认不会替你保存登录后的 Cookie。为 Client 注入 net/http/cookiejar 的 Jar,并复用同一个 Client,登录响应里的 Set-Cookie 才能在后续匹配请求中自动带回。298 收藏 -
Go 的 time.Time 用 == 比较失败,通常不是时间点不同,而是 Location 或单调时钟读数不同。本文解释 Equal、Round(0) 与 UTC 的使用边界。298 收藏 -
Go TLS 中 InsecureSkipVerify 只影响客户端验证服务端证书链和主机名,服务端客户端证书校验应看 ClientAuth 与 ClientCAs。298 收藏 -
Go context 的子任务不是重新获得一段独立超时,而是受父 Context 更早 deadline 约束。本文用可观察的 deadline、Err 和 Cause 排查提前 deadline exceeded,并给出按剩余预算创建子任务的写法。298 收藏 -
解释 Go io.TeeReader 如何同步把读取内容写入旁路 Writer,以及写入失败为何会从 Read 返回,并给出 n、err、部分写入和重试边界。298 收藏 -
json.Decoder.InputOffset 给出当前解码边界;语法或类型错误则应优先使用对应错误的 Offset。文章提供安全截取附近原始字节、处理流式输入和 UTF-8 字节位置的完整方法。298 收藏 -
用 Go slices.Chunk 把大切片按固定大小切成批次,核对尾块、空输入、返回切片容量和只读语义,给出适合批量写入与分页处理的选择边界。297 收藏 -
Golang · Go问答 | 1个月前 | 字符串 · 内存 · go · 性能 · 字符串拼接 reset() String() 内存复用 go strings.Builder WriteString
strings.Builder 适合顺序拼接字符串,但 String() 返回值与 Builder 的后续写入、Reset() 复用之间有明确边界。本文用可运行实验说明结果何时可以长期保存,以及为什么不能复制 Builder。297 收藏 -
Go 的 time.Ticker 停止后不会关闭 ticker.C,后台消费 goroutine 仍可能残留。本文用停止信号、context 和 WaitGroup 拆开 ticker 停止、循环退出与任务收尾,说明何时使用 NewTicker、Tick 和 Reset。297 收藏 -
Golang · Go问答 | 3星期前 | 连接池 · HTTP客户端 · Go问答 · TIME_WAIT httptrace http.Transport Go transport Go端口增长 HTTP连接复用 CLOSE_WAIT
Go 出站端口增长要先区分 ESTABLISHED、TIME_WAIT 和 CLOSE_WAIT,再用 httptrace 判断 Transport 是否复用。本文从响应体收尾、长期复用 Transport、连接边界和 socket 检查四个方面给出排查方法。297 收藏 -
处理键值文本时,strings.Cut 适合围绕第一个分隔符取左右两段,strings.Split 适合获取全部片段。本文用 Go 示例说明两者的返回语义、空字段、缺少分隔符和空分隔符边界,并给出选择方法。297 收藏 -
time.AfterFunc 的 Timer.Reset 返回 false,只说明旧定时器已经到期或停止,不代表旧回调已经结束。本文用 started/finished 信号说明如何判断旧回调状态,并避免新旧回调并发访问共享数据。297 收藏 -
Decoder.UseNumber 只把 interface 中的 JSON 数字保留为 json.Number,避免先转 float64;它不会替目标类型检查范围。转换为 int64、uint64 或 big.Int 时仍要检查错误与业务上限。297 收藏