Go语言技术文章
-
Go slices.IsSortedFunc 接收自定义比较器,判断结构体切片是否按照指定的升序规则排列。本文用分数和名称的复合排序说明比较器约定,并梳理相等项、空切片、逆序项以及与旧 sort API 的边界。460 收藏 -
Go x/text/collate 的 KeyFromString 返回切片指向可复用 Buffer。本文说明 Reset 后旧排序键为什么不能继续依赖,以及批量排序、长期缓存和直接比较时的正确取舍。460 收藏 -
Gonum optimize 的结束状态描述的是优化过程怎样结束,不是每个状态都等于找到了全局最优解。本文比较 Success、收敛状态、预算限制和 Failure,并给出 Go 代码中的结果判定方式。460 收藏 -
Go HTTP/1 处理器默认会先消费未读请求体,再开始写响应。本文用 ResponseController.EnableFullDuplex 说明如何在同一处理器中按块读取请求并持续写出响应,以及不支持、刷新和错误处理的边界。460 收藏 -
go/types.Info.Scopes 只会记录类型检查器为指定 AST 节点建立的词法作用域。本文用一个最小示例说明如何初始化作用域映射、完成 Check、按节点读取 Scope,并解释函数体 BlockStmt 为什么不单独出现在映射中。460 收藏 -
Go 的 net/url.URL 不负责保存解析失败原因,应该保留 url.Parse 返回的 error,并用 errors.As 提取 url.Error 的操作名、原始 URL 与底层错误。460 收藏 -
MoveBefore 传入同一个节点时本来就不会改变链表;本文从节点身份、所属列表和目标位置三个条件解释无变化现象,并给出可直接套用的排查写法。460 收藏 -
Go types.Struct 按字段索引同时提供 Field、字段类型和原始 Tag。本文从类型检查后的包作用域定位 Struct,给出兼容旧版本的遍历方式,并说明 Fields 迭代器、空标签、空白字段、嵌入字段和 NewStruct 标签边界。460 收藏 -
Go encoding/csv.Reader 开启 ReuseRecord 后,Read 返回的 record 可能共享上一条记录的底层数组。本文用保存字段、异步处理和复制边界三个场景说明为什么不能长期持有原切片,并给出如何用基准指标判断复用是否值得。460 收藏 -
maps.Clone 会保留 nil map 的状态,而 maps.Copy 只向已有目标写入。本文比较 nil 与空 map 的结果,说明 nil 源、nil 目标和非空源组合下的行为,并给出安全选择方式。460 收藏 -
Go 的 time.Time.AppendFormat 会把格式化结果直接追加到已有 []byte 并返回扩展后的切片。本文用日志字段示例说明返回值、容量复用、Format 对比以及布局和时区的使用边界。459 收藏 -
Go 的 Server.Shutdown 会等待活动连接回到空闲状态;如果请求、上游调用或长连接没有按预期结束,就会在上下文到期时返回超时。本文按负载、时间预算和连接类型拆解排查与修复方法。459 收藏 -
Go 项目存在 vendor 目录却在构建时找不到模块,通常与主模块根目录、go.mod 版本条件、vendor/modules.txt 不一致或依赖未被收集有关。本文给出从定位主模块到选择 -mod 模式的排查路径。459 收藏 -
夏令时回拨会让同一个本地时钟读数出现两次。本文解释 Go time.Date 为什么不保证选择哪一次,并给出用显式 UTC 偏移消歧、保存和展示时间的实用写法。459 收藏 -
Go log/slog 的 WithGroup 会为 Logger 的后续属性建立命名空间。本文用 TextHandler 与 JSONHandler 对比嵌套字段、说明空组行为,并给出子系统日志的组织方式。459 收藏