Go问答
已收录文章:43篇
-
Golang · Go问答 | 4天前 | 标准库 · 文件读取 · io.Reader · Go问答 · io.EOF · Go read io.Reader io.EOF Go问答 n err 读取循环回答 Go io.Reader 读取时为什么要先处理 n 再判断 err,解释 n>0 且 err==io.EOF 的边界、错误写法为什么会丢最后一段,并给出可复用读取循环和排查清单。486 收藏
-
Golang · Go问答 | 4天前 | select · 并发控制 · Go问答 · nil channel · select Go 并发控制 channel阻塞 Go问答 nil channelGo select 里的 nil channel 不会被选中,这个特性可以用来动态关闭某个分支。常见场景是多个输入源只消费一次、某个阶段完成后暂停监听,或者避免关闭 channel 后的重复读取。467 收藏
-
Go 服务内存持续上涨时,先区分 RSS、heap、goroutine 和缓存增长,再决定是限流、回滚还是抓 pprof。线上处理需要先判断稳定性风险,再保留证据、止血恢复,并把告警阈值和复盘项补齐。467 收藏
-
Golang · Go问答 | 1星期前 | go语言 · HTTP客户端 · Go问答 · 连接复用 · 排查清单 · net/http 连接复用 HTTP响应体 Go问答 resp.Body.Close 排查清单本文从 Go HTTP 客户端连接数上涨的现象出发,按代码、连接池和日志三层检查响应体是否读完并关闭,给出修复写法、反向验证和上线清单。452 收藏
-
Go 里值接收者和指针接收者的选择,不只影响是否能修改对象,还会影响类型能不能满足接口。值方法通常同时属于值和指针的方法集,指针方法只属于指针的方法集。要修改对象、避免大结构体拷贝或保持方法接收者一致时,优先用指针接收者;小型不可变值可以用值接收者。449 收藏
-
Golang · Go问答 | 1星期前 | 并发 · channel · select · 性能排查 · Go问答 · select Go channel context default CPU飙高 忙等循环 tickerGo select 里的 default 会在没有 channel 就绪时立即返回;如果外层套着无限 for,就会形成忙等循环,让 CPU 空转。更稳的写法是阻塞等待、用 ticker 控制检查频率,并用 context 处理退出。438 收藏
-
Golang · Go问答 | 3天前 | 并发 · channel · range · Close · Go问答 · 并发退出 Channel关闭 Go问答 close channel range退出 发送方关闭Go channel 关闭后仍然可以把缓冲区里的值读完,再继续读取会得到元素类型的零值和 ok=false;但关闭后的 channel 不能再写入,也不能重复关闭。真正安全的关键是让发送方统一负责关闭,并让接收方用 range 或 ok 值退出。427 收藏
-
围绕 Go defer 在循环中的常见误用,解释为什么文件、连接、锁等资源会等到函数返回才释放,并给出函数拆分、显式关闭和错误处理的实战写法。418 收藏
-
回答 Go 接口跨域时 OPTIONS 预检请求为什么会返回 404,给出标准库 http 中间件的最小写法、带路由框架时的变体、常见响应头坑点和发布前检查清单。388 收藏
-
Golang · Go问答 | 1星期前 | Timer · 性能优化 · time.After · Go问答 · Go 内存优化 Timer time.After Go问答 time.NewTimer Go1.23解释 Go time.After 在循环里的资源占用问题,区分 Go 1.23 前后的 Timer 语义变化,并给出 time.After、time.NewTimer、Stop 和 Reset 的工程选择建议。384 收藏
-
Golang · Go问答 | 3星期前 | map · RWMutex · sync.Map · go并发 · Go问答 · Go channel map 并发读写 Fatal error RWMutex sync.Map本文用完整工作流回答 Go map 并发读写为什么会崩:先复现 fatal error 和 data race,再定位共享 map,最后按场景选择 RWMutex、sync.Map 或 channel 收口,并给出上线前检查清单。379 收藏
-
Golang · Go问答 | 1星期前 | channel · 并发编程 · Go问答 · 背压 · 容量规划 · Goroutine channel 缓冲区 背压 Go问答 buffered channel 并发容量Go channel 缓冲区不是越大越好。容量越大只能延后阻塞,不能提升消费者处理能力;高并发场景要按到达速率、处理耗时、可接受延迟和背压策略一起定。377 收藏