Go教程技术文章
-
Go 按分钟对齐时间的最小写法是 t.Truncate(time.Minute)。本文说明它的绝对时间语义、返回值和时区边界,并比较 Truncate、Round 与 time.Date 的适用场景。486 收藏 -
本文用一个小型 Go 工具说明 time.Time.UnixMilli 如何生成毫秒时间戳,解释 UnixMilli 与 Unix 的单位区别、1970 年以前的负值、双向还原以及 JSON 和数据库边界的统一约定。252 收藏 -
Go 的 time.Ticker 退出时不能只停业务循环,还要明确 Stop、ticker.C 和消费协程的生命周期。本文用一个可复用的退出模式说明如何停止 ticker、等待 goroutine 并避免通道误用。132 收藏 -
Go 1.23 起使用 net.Dialer.KeepAliveConfig 明确设置 TCP 保活开关、空闲时间、探测间隔和未应答次数,并说明旧字段与平台差异。185 收藏 -
复用 Go time.Timer 时,Go 1.22 及更早版本要先 Stop 并排空通道再 Reset;Go 1.23 起通道型 Timer 的 Reset 语义消除了旧事件残留。本文按版本、通道所有权和 AfterFunc 边界给出可直接采用的处理方案。281 收藏 -
httputil.DumpResponse 没有响应头过滤参数。本文用复制 Response、复制 Header、大小写不敏感删除和 body=false 的方式生成安全调试摘要,并说明需要正文时怎样避免误伤原响应。486 收藏 -
Go context.AfterFunc 可在上下文取消后执行清理,但 stop 不代表清理完成。通过独占停止句柄和完成通道,组织正常返回与取消回调,接收清理错误,并明确并发访问、等待和资源所有权的限制。495 收藏 -
Go 的 os.MkdirTemp 会在指定或系统临时目录下创建带随机后缀的独立目录。本文用一个小型工作目录场景说明参数、权限、返回路径、清理责任和常见错误边界。274 收藏 -
Go 的 http.Request.GetBody 是重新取得请求体的可选工厂。本文说明 NewRequest 的自动设置边界、手动补齐方式,以及再次调用 Client.Do 前怎样替换 Body。113 收藏 -
用 Go netip.ParseAddr 与 Addr.IsPrivate 识别 RFC 1918、RFC 4193 私有地址,处理 IPv4 映射边界,并区分地址分类与安全授权。116 收藏 -
通过MultipartReader逐部件接收单文件,用实际读取限额、文件上限、固定复制缓冲及并发准入控制资源。原创示例说明私有暂存、失败清理与成功交付的责任边界,避免把复制缓冲大小误当成进程内存上限。248 收藏 -
Go net/http 使用 http.Client.Timeout 设置客户端请求总超时,本文用一个可复用的小项目说明总预算、请求级 context、Transport 分阶段超时和超时错误识别。435 收藏 -
Go strconv.AppendBool 会把 true 或 false 直接追加到已有 []byte,并返回可能扩容后的切片。本文用配置行构建器说明返回值、缓冲区复用、结果所有权,以及它与 FormatBool 的选择边界。389 收藏 -
Go slog 通过 HandlerOptions 的 AddSource 把日志调用位置加入 TextHandler 或 JSONHandler 输出,本文说明 source 的生成、包装影响与生产取舍。402 收藏 -
Go 的 json.SyntaxError.Offset 表示解析器读过的字节数。本文用 error.As 取出语法错误,安全截取错误附近内容,再把字节偏移换算成行列位置,并区分 SyntaxError、InputOffset 与类型错误的适用边界。205 收藏