Go问答技术文章
-
Go time.Time.Truncate 按绝对时间取整,半小时偏移的时区可能仍显示本地 :30。本文用最小示例区分固定时长边界与本地日历边界,并给出保留 Location 的 time.Date 重建方案。215 收藏 -
Go go-message/mail 读取邮件时,可以通过 Part.Header 的具体类型区分正文内联部分和独立附件。本文结合 NextPart、InlineHeader、AttachmentHeader 以及 CreateInline、CreateAttachment,说明 MIME 结构、读取生命周期和写入选择。215 收藏 -
Go time.Time 的单调读数会影响比较与相减,== 还比较 Location 和完整表示。本文用 JSON 往返与时间索引示例,区分 Equal、进程内计时和 UTC 规范化键,并解释精度丢失的排查方法。215 收藏 -
泛型 Named 实例的 Obj 与 Origin().Obj 返回同一声明对象。通过构造示例说明声明名字、原始类型和实例实参应怎样分别读取与保存。215 收藏 -
Go同一信号注册多个channel时,如何区分独立订阅与竞争接收,安排缓冲、消费和Stop,并选择适合整组退出的取消状态。215 收藏 -
Go 的 exec.CommandContext 默认只取消 Cmd 对应的直接进程,不会自动递归终止它派生的所有后代。本文区分 Cancel、Wait、WaitDelay 和进程组策略,解释为什么主命令退出后子进程仍可能存在。215 收藏 -
Go json.Unmarshal 解码时间字段时报错,先区分时间格式不符合 RFC3339 还是 JSON 类型与结构体字段不匹配,再决定保留 time.Time、增加自定义 UnmarshalJSON,或使用中间结构完成外部格式适配。214 收藏 -
Go 1.27 将 crypto/tls Config.Rand 标记为弃用。本文说明生产配置为什么应保持 Rand 为 nil,以及测试中如何用 testing/cryptotest.SetGlobalRandom 获得可重复但有作用域边界的随机源。214 收藏 -
Go IPv6 控制消息需要先启用对应接收选项,再用 PacketConn.ReadFrom 取得逐包元数据。本文给出完整接收函数,区分配置与发送,并解释空值和平台限制。214 收藏 -
Go 的 github.com/pkg/sftp 同时提供 Rename 和 PosixRename,但两者对已存在目标文件的处理语义不同。本文用远程发布场景说明覆盖边界、扩展探测和安全选型。214 收藏 -
在重复等待场景中,time.After 适合一次性超时;需要复用和动态调整时,应持有 time.NewTimer 返回的 Timer,并按 Go 版本选择正确的 Reset 与清理方式。214 收藏 -
Go JSON 时间字段可通过自定义 UnmarshalJSON 兼容有限格式,并显式约定无时区输入的含义。本文给出字段存在性、null、错误反馈和 UTC 统一回写的完整示例。214 收藏 -
Go pprof 端口不只是一个性能页面:/debug/pprof/ 可能返回命令行、栈信息和运行时 profile,CPU 与 trace 采集还会带来额外开销。本文说明暴露风险,并给出只监听本机、受控访问和发布前检查的方法。214 收藏 -
slog 包装 Handler 丢失 With 字段,常见原因是未保留派生状态。本文给出四方法委托实现与父子、分组、等级测试,并区分 Record 属性和 context.Value 的处理边界。213 收藏 -
解释 Go x/text/unicode/bidi 中段落主方向、连续方向 run 和视觉顺序的区别,给出混合中文、拉丁字母、阿拉伯文字与数字时的处理写法。213 收藏