Go问答技术文章
-
Go encoding/gob 解码到已有结构体时不会先清空目标,流中缺少的字段和发送端被省略的零值字段可能继续保留旧内容。本文用最小示例说明字段合并语义,并比较复用目标、解码到新变量和存在性字段三种处理方式。319 收藏 -
用 database/sql 的 ColumnTypes 处理动态查询列:字段白名单负责安全,参数绑定负责值,ColumnTypes 负责结果元数据与稳定组装。319 收藏 -
从 G、M、P 的阻塞表现出发,把 Go 长时间 CPU 计算拆成可恢复批次,用 context、有界 worker 池和 execution trace 控制延迟、取消与并行度。319 收藏 -
Go 普通 map 并发读写会触发数据竞争,严重时出现 fatal error。本文按访问边界说明原因,并比较 mutex、RWMutex、单协程所有权与 sync.Map 的适用场景。319 收藏 -
Go 的 os.MkdirAll 创建目录失败时,问题通常不在 0750 或 0777 本身,而在父目录搜索/写入权限、运行身份、只读挂载或 umask。本文按 PathError 定位受限环节,并给出更稳妥的修复顺序。319 收藏 -
说明go-diff的DiffTimeout为何同时影响搜索期限与half-match启发式,并通过比较示例区分文本重建、编辑量、可读性和调用耗时。319 收藏 -
Go gopacket 的 CaptureLength 是实际读入的字节数,Length 是原始报文长度。本文用 CaptureInfo、PacketMetadata 和 pcapgo Reader 说明两者的关系、截断判断与代码用法。319 收藏 -
Go 的 regexp.Compile 失败时,先区分正则语法错误与匹配不到,再用 regexp/syntax.Error 读取错误类型和问题表达式,最后处理动态规则与 MustCompile 的边界。318 收藏 -
Go build 的 -ldflags 不是主动截断空字符串,问题通常来自 Shell 展开与 Go 参数列表拆分。本文说明 -X 的完整 assignment 写法、带空格值的引号边界,以及用 go build -n 排查参数丢失。318 收藏 -
Go 的 select default 只负责非阻塞选择,不负责等待取消。本文用 worker、ctx.Done、关闭 channel 和 ok 判断说明正确处理取消信号的方法。318 收藏 -
Go 的 nil map 读取会返回元素零值,但写入会触发 panic。本文用可复现的判断方式拆开读取、ok 值、len、make 和嵌套 map 的边界,给出稳定修复方案。318 收藏 -
Golang · Go问答 | 1个月前 | 标准库 · 错误处理 · IO · Go问答 · 版本迁移 · Go io.Reader io.EOF io.ReadAll ErrUnexpectedEOF ioutil.ReadAll
io.ReadAll 的任务就是一直读取到 EOF,因此 EOF 表示任务正常完成,成功时返回已读字节和 nil;只有非 EOF 错误才会作为错误返回,且错误发生前已读取的数据仍会保留。318 收藏 -
Golang · Go问答 | 3星期前 | net/http · HTTP客户端 · Go问答 · Go net/http gzip Transport.DisableCompression Accept-Encoding 响应解压
Go 的 Transport.DisableCompression 只控制是否自动添加 Accept-Encoding: gzip;自动请求的 gzip 响应会被透明解压,而用户显式请求 gzip 时仍需自己处理压缩 Body。318 收藏 -
Go Reader 的字节分块不保证 UTF-8 字符边界。本文给出持续使用 bufio.Reader.ReadRune 的完整示例,区分半个编码、非法字节、合法 U+FFFD 与流末尾截断,并说明批量解码的状态约定。318 收藏 -
Go LDAP 的 Referrals 是引用地址,不是已读取的条目。本文比较限定单端点、报告未处理引用和受控追踪三种策略,并给出同时保留条目、引用与错误的查询函数。318 收藏