Go语言技术文章
-
Go 的 net/url.URL.Port 只返回 URL 中显式写出的端口,不会自动补出 http 或 https 的默认端口。本文用一段可复用的解析代码说明显式端口、默认端口、IPv6 主机和异常输入的处理边界。439 收藏 -
用 testing.B.ReportMetric 把累计计数换算成每次操作或按时间统计的自定义基准指标,并处理单位、覆盖和并行计数边界。439 收藏 -
UnreadRune 不是任意读取后的撤销按钮:它要求最近一次方法调用是 ReadRune,而且一次成功回退后不能连续再次回退。本文用逐字符解析示例说明调用契约、失败原因和稳定写法。439 收藏 -
Go encoding/json 遇到重复 JSON 键时会按输入顺序处理,简单字段通常由后值覆盖先值。本文用最小样例解释 map、结构体和嵌套对象的边界,并给出外部输入检测重复键的工程处理方案。439 收藏 -
Golang · Go问答 | 11小时前 | go · 垃圾回收 · Go问答 · Go runtime.MemStats HeapAlloc HeapReleased HeapInuse HeapSys
Go MemStats 的 HeapAlloc 表示已分配堆对象字节数,HeapInuse 表示至少含一个对象的 in-use span 字节数。本文用对象、size class、HeapSys、HeapIdle 和 HeapReleased 的关系解释两者差异,避免把 HeapInuse 直接当成 RSS 或泄漏量。439 收藏 -
通过一个延迟标签任务说明synctest如何在bubble内推进虚拟时间,区分time.Sleep观察点与Wait同步,提供期限前后断言示例、资源边界和后台任务清理建议。439 收藏 -
用 Go debug/buildinfo.ReadFile 读取已构建二进制中的主模块、依赖版本与版本控制信息,配合发布校验避免拿错构建产物。438 收藏 -
Go SetDeadline 设置的是连接上的绝对读写期限,不是只作用于下一次调用。本文说明总耗时与空闲超时的区别、方向 API 的选择、超时判断和并发复查方法。438 收藏 -
Go 可以用文件名后缀和 //go:build 条件编译为 Windows、Linux 提供不同实现。本文用一个跨平台文件权限接口说明目录组织、构建标签、文件选择检查和常见坑。438 收藏 -
Go 的 select default 只说明本次 channel 未就绪,不等于任务失败。本文用 pending 状态、指数退避、随机抖动和 context 取消,说明非阻塞收发如何降频重试并避免丢任务。438 收藏 -
Go embedding 的字段冲突要先看选择器路径:同层同名会产生歧义,外层同名会隐藏嵌入字段,而方法提升还要单独检查签名与显式调用路径。本文用最小示例说明如何定位并修复。438 收藏 -
Go 子切片 append 后原切片内容被改写,通常是因为子切片仍有足够 cap,append 复用了同一个底层数组。本文用 len、cap、三索引切片和复制方案说明如何判断与隔离。438 收藏 -
说明 Go 服务启动时如何为 database/sql 的 PingContext 设置独立超时,区分超时、取消和驱动错误,并选择失败退出或降级策略。438 收藏 -
go-cmp 比较含未导出字段的结构体时 panic 不是库失效,而是默认拒绝猜测内部字段语义。本文按字段用途选择 IgnoreUnexported、自定义 Comparer 或 AllowUnexported。438 收藏 -
Go x/text/unicode/bidi 处理的是双向文本的段落与视觉 runs,不是把右向字符串从头到尾反过来。本文用混合文本说明 ReverseString 的边界,并给出 Paragraph.Order 与 Line 的排查写法。438 收藏