
golang
升级单个依赖用goget@latest,确保项目依赖干净准确必须执行gomodtidy;前者精准更新版本,后者扫描代码并同步go.mod/go.sum,二者分工协作不可替代。
本地启动多个微服务时端口冲突应避免硬编码,改用环境变量(如PORT)或自动探测可用端口(开发环境);服务间调用需统一网络地址(如host.docker.internal或127.0.0.1)并设置合理...
应使用sync.WaitGroup显式等待goroutine完成:启动前wg.Add(1),结束时wg.Done(),主协程调用wg.Wait();channel由发送方在所有发送完成后关闭;避免ti...
pprof是性能优化的必选项,必须先用gotoolpprof定位CPU、内存、goroutine瓶颈,再针对性优化;盲目改代码90%是浪费时间。
query参数必须用r.URL.Query()解析,它自动处理URL解码、重复键等;路径参数需依赖chi等路由库;JSON请求须用json.NewDecoder(r.Body)流式解码,不可用Pars...
多数主流CI平台预装Go但版本滞后,需显式指定版本(如1.22.5)并配置GOPROXY、GOSUMDB、CGO_ENABLED等环境变量以确保构建稳定复现。
Go标准库不支持WebSocket,需用gorilla/websocket;服务端用Upgrader升级连接后读写消息,客户端需手动拨号并处理重连与超时。
Go几乎不支持隐式类型转换,仅允许无类型常量赋值、接口实现赋值和方法调用隐式解引用三种特例;数值类型间运算必须显式转换,如int16(a)+b,字符串与数字、不同切片类型间均不支持隐式转换。
new返回*T类型的零值指针,仅分配并清零内存,不初始化逻辑或创建可直接使用的slice/map/channel;make才用于构造可立即使用的引用类型。
Go中struct是唯一基础单元,字段首字母大小写决定导出性,推荐字段名赋值初始化,匿名字段实现组合式字段提升,方法接收者选值或指针取决于是否修改原值,私有字段不参与JSON序列化和ORM映射。