Go问答技术文章
-
Go regexp 默认采用 leftmost-first 规则,同一起点有多个候选时不一定选择最长结果。本文用 Regexp.Longest 说明 leftmost-longest 的差异、调用时机、并发边界,并比较它与 CompilePOSIX 的适用场景。444 收藏 -
Go genetlink的Command属于内层通用消息头,Netlink外层Type负责选择协议族。结合离线封装示例,说明familyID、版本、请求标志及控制消息的区别。444 收藏 -
atomic.Value 虽然接收 any,但同一个 Value 的 Store、Swap 和 CompareAndSwap 必须保持一致的具体类型。本文解释首个 Store 的类型锁定、nil 规则、常见 panic 以及统一快照结构的改法。444 收藏 -
go fix 的修改范围由命令末尾的包模式决定。本文用当前包、精确目录、子树模式和完整导入路径说明怎样缩小分析集合,并结合 go list、-C、-diff、fixer 开关与构建标签给出可审查的小批量改写流程。443 收藏 -
go.sum 被反复改写通常不是随机行为,而是依赖图、Go 工具链、tidy 兼容范围或工作区边界发生了差异。本文给出一套先看差异、再固定环境、最后决定提交的排查方法。443 收藏 -
Go ResponseRecorder 测试通过不代表客户端响应正确。本文以 HEAD 请求对比内存记录与真实服务器,说明头快照、Flush 和接口能力边界,并给出分层测试方案。443 收藏 -
Golang · Go问答 | 3星期前 | HTTP · go · sse · net/http · net/http WriteTimeout SSE IdleTimeout Go HTTP 长连接空闲超时
Go net/http 的 IdleTimeout 主要管理 keep-alive 连接等待下一个请求,并不是 SSE 消息间隔计时器。本文区分 IdleTimeout、WriteTimeout、Flush、心跳和中间代理策略,给出一套可落地的 SSE 排查与处理方式。442 收藏 -
并发测试里固定随机种子仍可能复现不了同一结果,常见原因是多个 goroutine 共享 Rand 或 Source,调用顺序被调度改变。本文按当前 math/rand 规则解释并发边界,给出局部随机源、种子派生和 rand.Seed 迁移方案。442 收藏 -
Go Background 本身不保存请求值。本文区分派生上下文复用、共享可变对象和取消关系,提供每请求独立关联号中间件,并说明私有键、WithoutCancel 与后台任务的数据边界。442 收藏 -
Go netlink的AttributeDecoder.Type返回基础类型,TypeFlags返回高位标志。通过离线属性示例说明位掩码、网络字节序、Nested与Flag的区别,以及载荷解析约束。442 收藏 -
go vet 的 copylocks 检查会提醒你:包含互斥锁、Once 或 WaitGroup 的值不应沿着参数、返回值、赋值和 range 路径被复制。本文用最小结构体说明告警边界,并给出指针接收者、指针集合和 CI 检查的修复方式。441 收藏 -
Go cgo 构建遇到 undefined symbol 时,先用 go build -x 找到实际链接输入,再按 -L 搜索路径、-l 库名、依赖顺序和 pkg-config 逐项定位。本文只讨论 #cgo LDFLAGS 与链接器输入。441 收藏 -
Go race 无报告不能证明全程序并发正确。本文从包范围、实际路径和共享对象排查覆盖盲区,给出并发用例结构与测试参数,并区分数据竞争检测和业务断言。441 收藏 -
Go 服务调整 TLS 最低版本后旧客户端握手失败,通常不是证书单一问题,而是双方允许的协议版本没有交集。本文用 tls.Config、MinVersion、MaxVersion 和连接状态说明如何定位,并给出隔离旧客户端入口的兼容策略。440 收藏 -
Go 客户端自定义 TLS 拨号或按 IP 连接时,ServerName 缺失会破坏主机名校验与 SNI 证书选择。本文区分拨号地址、证书身份和根证书信任,给出 http.Transport 与 tls.Client 的安全修复写法。440 收藏