-
缓冲区大小需权衡同步与吞吐:无缓冲channel用于协程握手,高频小数据用atomic,中低频大数据缓冲≤1024;range遍历时close不等于EOF,多生产者须用WaitGroup协调关闭。
-
必须显式构造net.Resolver并设PreferGo:true,否则Dial回调不生效;http.Client需通过Transport.DialContext手动调用该resolver,且域名须为FQDN,IPv4查询应指定"ip4"参数以避免连接失败。
-
不能在普通for循环中直接await协程,因为for依赖同步的iter()/next()协议,而协程需await才能执行;应使用asyncfor(针对异步迭代器)或asyncio.gather()(并发执行协程)。
-
container/list的PushFront和PushBack用于在双向链表头部和尾部添加元素,返回*list.Element;需配合Len()判断非空、Remove()真实删除,避免悬空指针和内存泄漏。
-
内网无法访问proxy.golang.org时应禁用代理并部署离线方案:执行goenv-wGOPROXY=direct临时绕过,推荐部署athens或goproxy.cn离线镜像,并同步设置GOSUMDB=off或内网校验服务。
-
Timer.Stop()返回false仅表示定时器已触发或已被停止,并非失败;正确做法是先Stop()再立即从t.C读一次(用select+default避免阻塞),确认无待处理时间后才Reset()。