-
http.ServeFile默认Content-Type为text/plain是因mime.TypeByExtension无法识别扩展名时fallback所致;应手动设置Content-Type和Content-Disposition响应头,且优先基于文件逻辑名(而非路径)推导类型,上传场景需持久化客户端声明的original_mime。
-
答案:使用httptest模拟请求响应,结合mock依赖和路由测试,确保GoHTTP接口的正确性。通过NewRequest和NewRecorder验证处理器行为,分离业务逻辑与HTTP处理,测试状态码、返回数据及中间件影响,覆盖正常与错误路径。
-
Go微服务动态扩容依赖Kubernetes与服务配合,需实现无状态、健康/就绪探针、优雅关闭、资源限制,并通过HPA、脚本及可观测性保障稳定伸缩。
-
etcdWatch收不到通知主因是上下文取消或连接断开未重连;需持续读取WatchChan、检查chan关闭、用WithRev避免漏事件、幂等处理重复变更。
-
viper.ReadInConfig()文件不存在时静默失败,需显式检查err并测试兜底key;Unmarshal时类型不匹配亦静默转换,应启用SetTypeByDefaultValue(true)并二次校验关键字段。
-
Go程序可通过设置GOOS=linux和GOARCH=amd64(或arm64)本地交叉编译为Linux可执行文件;若启用cgo需配置交叉C工具链或禁用CGO_ENABLED=0;部署后常见问题包括权限、架构不匹配、端口限制等,可用file、strace、journalctl等工具排查;生产环境须配置HTTP超时、连接池、结构化日志及关闭pprof。