Go语言技术文章
-
Go net.Dialer.Control 提供了真正拨号前接触底层连接的入口。本文用 syscall.RawConn.Control 说明如何在回调内读取或设置 socket 参数、传递错误,并处理网络名变化与文件描述符生命周期边界。328 收藏 -
通过有界环形队列说明sync.Cond广播、循环等待与关闭语义,复用存储和固定工作协程,并讨论分配、背压及业务完成边界。328 收藏 -
archive/tar 写入长文件名后出现截断或读取结果不符合预期,通常不是字符串被 Go 随机改写,而是归档格式能力、Header.Format、Header.Size、Close 生命周期和解包端兼容性没有对齐。本文比较 USTAR、PAX、GNU,并给出可复用的 PAX 写入与读取示例。328 收藏 -
用 Go csvutil 编写逐条解码库存 CSV 的统计工具,只保留当前结构体与计数器,说明 EOF、表头、空字段和下游持有方式为何影响真正的流式处理。327 收藏 -
Go 1.24 起可以通过 net/http.Protocols 明确控制 Server 接收的协议。本文用服务端配置示例说明如何让 HTTP/1 与未加密 HTTP/2 共存,解释 h2c 与 TLS HTTP/2 的差异,并给出回滚和排障要点。327 收藏 -
解释 Go x/text/secure/precis 的 OpaqueString 为什么面向 Unicode 口令字符串,而不是任意二进制秘密,并给出 Go 中的选型和错误处理方式。327 收藏 -
通过NewBuiltin与预声明环境向Starlark脚本注册Go宿主函数,说明参数解析、返回值、错误处理与性能测量口径。327 收藏 -
Go go-geom 中空几何没有坐标,零坐标点却是有效的 (0,0) 坐标。本文用 NewPointEmpty、NewPoint、Empty 和 GeometryCollection 说明两者差异,并给出导入与计算前的安全判定方式。327 收藏 -
Go TLS 的 MinVersion 限定协议协商下限,旧客户端最高版本不足时会因无共同版本握手失败。本文给出服务端配置示例,说明证书、TLS 终止点、日志与版本组合排查方法。327 收藏 -
Go 的 gob 同时遇到 GobEncoder 和 BinaryMarshaler 时,会优先调用 GobEncoder。本文从接口优先级、值与指针方法集、错误处理和持久化版本四个方面说明如何稳定控制编码路径。327 收藏 -
Go go/types.Config 看起来不生效,通常是配置没有传给同一次 Check、文件集合不完整、Importer 缺失,或 types.Info 没有初始化。本文按四个对照点定位,并给出可复用的 Config.Check 示例。327 收藏 -
本文说明如何使用net.ListenConfig.Control在绑定前设置Unix socket选项,解释RawConn.Control的错误传递、network参数变化、context边界和跨平台排查方法。327 收藏 -
Go AST 中一个 Field 可以保存多个参数名。本文比较分组计数、NumFields 与参数明细方案,用完整示例展开 Names,并处理无名参数、空白标识符和可变参数。327 收藏 -
Go 的 O_APPEND 只保证写入时追加到文件末尾,不能把 Seek 返回的偏移当成最终写入位置。本文拆开解释 O_APPEND、Seek 和 Write 的职责,给出追加日志、固定偏移写入和读写分离三种安全选择。327 收藏 -
解释 Go Excelize 读取公式单元格时拿到旧结果的原因,区分缓存值与重新计算值,并给出 CalcCellValue 的排查和使用方法。326 收藏