Go问答技术文章
-
Go 交叉编译时设置 CGO_ENABLED=0 后缺少实现,通常不是链接器突然丢了函数,而是带 import C 的文件被 cgo 构建约束排除。本文说明如何定位、补 !cgo 回退,或为目标平台准备 C 交叉工具链。148 收藏 -
bytes.Reader.Reset 会把读取器切换到新的字节切片,并把顺序读取位置带回新数据开头。本文用复用场景拆开 Reset、Read、Len、Size、ReadAt 与 UnreadByte 的边界,避免把读取位置和底层数据混在一起。147 收藏 -
Go malgo 的 framecount 表示一批音频帧,单帧包含所有声道各一个采样点;总采样点数和字节数还要结合声道数与采样格式计算。本文用回调、设备周期和排查信号说明三者区别。147 收藏 -
Go WebSocket 关闭码应按所选库从读循环错误中提取。本文用 Gorilla CloseError 展示 Code 与 Text 的读取方式,说明 1005、1006、本地主动关闭和握手 HTTP 状态的区别。147 收藏 -
bufio.Scanner 本身不负责关闭底层 Reader。本文用文件读取场景说明资源所有权、defer 释放、Scan 错误检查和长 token 边界,帮助定位文件句柄或连接没有回落的问题。147 收藏 -
Go printer.CommentedNode 不会自动复制整个 AST 文件的注释,它把一个目标节点和指定的 ast.CommentGroup 切片交给 printer.Fprint。本文用一个源码生成场景说明如何筛选注释、复用 FileSet 并处理未选注释与合成节点的边界。147 收藏 -
Go 结构体包含 Mutex 时,值接收者、按值参数与容器操作都可能复制锁。本文通过计数器说明指针传递、容器存指针、noCopy 的作用以及并发计数的判断方法。146 收藏 -
Go 提示 x509 未知机构时,服务端证书链齐全并不等于客户端信任。文章区分链材料与信任锚,定位 RootCAs、容器根库及TLS终止点,提供保留系统根并追加受控CA的专用客户端示例,说明安全修复边界。146 收藏 -
Go 白名单匹配 IPv4-mapped IPv6 时,直接使用 Is4 或 IPv4 前缀会出现未命中。本文用 netip.ParseAddr、Is4In6 和 Unmap 生成统一比较键,并说明 Prefix.Contains、真正 IPv6、zone 与无效输入的边界。146 收藏 -
Go 文件名平台后缀与构建注释必须同时满足。本文用冲突片段和互补实现说明如何修改文件命名、表达平台并集,并区分目标环境、额外标签及文件选择结果。146 收藏 -
Go 事务 Commit 返回成功后仍读取不到刚写入的数据,通常要先检查提交错误、查询条件、Tx 与 DB 是否混用,以及是否读到了延迟副本。本文按 database/sql 的事务边界给出排查与实现方式。146 收藏 -
Go go/types.Config.IgnoreFuncBodies 可以让类型检查器跳过函数体,但不会跳过函数声明、参数和返回值。本文用最小源码分析流程说明它的影响范围、Info 映射的取舍,以及为什么函数体内表达式信息会变得不完整。146 收藏 -
Go flag.FlagSet.SetOutput 只能改变解析错误和 Usage 的输出位置;要让调用方拿到错误并自行决定返回或退出,还要使用 flag.ContinueOnError。146 收藏 -
Go csv.Reader 的 FieldsPerRecord 为零时会由首条记录确定后续列数。本文比较零值、正数和负数,解释表头、空字段与 ErrFieldCount,并给出读取策略迁移示例。145 收藏 -
database/sql 查询提前返回时,如果 Rows 没有关闭,连接可能持续处于使用中。本文用 MaxOpenConns=1 的最小测试说明阻塞现象,并给出安全读取与排查方法。145 收藏