Go语言技术文章
-
c.ShouldBindJSON()报“invalidcharacter”错误是因json.Unmarshal解析非法输入失败,常见原因包括空字符串、纯空白、x-www-form-urlencoded格式或缺失Content-Type:application/json头。166 收藏 -
Gomap非线程安全,需用sync.Map或封装加锁;声明后必须make初始化;判断key存在须用v,ok双赋值;预估容量避免扩容;key宜用简单类型,value大时存指针;迭代顺序随机不可依赖。166 收藏 -
优先用YAML文件定义Runbook,Go程序仅负责加载、校验和执行;结构体仅适合固定字段,YAML支持灵活编辑、Git管理、模板渲染与安全执行控制。166 收藏 -
生产环境应选go-co-op/gocron:支持并发控制、单例模式、秒级cron,默认单goroutine更安全;robfig/cron/v3时区需显式配置,Stop()不立即生效,且非线程安全,动态增删须通过channel中转。166 收藏 -
本文介绍如何为Go中返回多个值的函数编写清晰、可维护的表格驱动测试,通过结构体字段映射各返回值,并提供完整示例与最佳实践。166 收藏 -
是的,Gonet包在Windows上自Go1.9起真走IOCP,但仅限net.Conn相关操作(Listen、Accept、Read、Write);os.Open、filepath.WalkDir等仍为同步Win32调用,不进完成端口。166 收藏 -
Golang · Go教程 | 4天前 | goroutine · Context · 超时控制 · Go教程 · 后端开发 · Go Goroutine context 超时控制 WithTimeout Done QueryContext
本文用完整工作流讲解 Go context 超时控制:从 HTTP 入口创建超时预算,把 ctx 传给 DB 查询和远程请求,到 goroutine 监听 Done、及时退出并释放资源,最后给出验证和上线清单。166 收藏 -
expvar.NewInt和expvar.NewFloat有效,但需确保变量被全局引用且命名合法;自定义struct应嵌入expvar.Map并Publish;/debug/vars需手动注册handler;生产环境可安全启用,性能开销极低。165 收藏 -
embed只能嵌入当前包目录下的静态文件,需用//go:embed显式声明路径;读取时必须检查error,避免fs.ErrNotExist导致panic;SQL文件应小写+下划线命名,按前缀排序执行;需适配迁移库或手动维护版本记录。165 收藏 -
单元测试只测函数逻辑、隔离外部依赖,集成测试连真实依赖但需可控可销毁;二者通过构建标签//go:buildintegration严格分离,子测试t.Run组织多场景用例并确保独立性。165 收藏 -
优先选Node.js:内部管理后台、小程序轻量API、MVP验证期服务;Go更适合需稳定低延迟、严控内存或深度集成K8s/Envoy的场景。165 收藏 -
使用ConfigMap挂载配置文件并结合fsnotify监听实现Go服务配置热更新,避免重启Pod。165 收藏 -
使用openzipkin/zipkin-gov0.5初始化tracer并配对HTTP中间件是唯一稳定上报、形成跨服务链路的方法;其他库已归档且不兼容Zipkinv2API,会导致静默丢span或400错误。165 收藏 -
更新Go依赖需通过goget结合gomodtidy等命令精准管理;常用gogetmodule@version更新特定版本,goget-u升级直接依赖至最新兼容版(不跨主版本),并用gomodtidy清理冗余依赖、同步go.sum,确保依赖一致性。165 收藏 -
最稳导出方式是用excelize.NewFile()写数据后直接file.Write(w),设Content-Type为application/vnd.openxmlformats-officedocument.spreadsheetml.sheet、Content-Disposition带ASCII文件名,禁用SaveAs;字符串需设NumFmt:49文本格式,长数字加单引号,大文件用SetSheetRow批量写,严防中间件污染响应流。165 收藏