
golang
进阶关键在于“何时不该用”和“问题定位”:goroutine泄漏因未关闭channel或缺退出机制;缓冲大小需权衡背压与性能;共享状态高频场景仍需锁或原子操作;WorkerPool须结合context...
GoTODO应用用net/http实现轻量Web服务,以切片+sync.RWMutex管理并发安全的TODO数据,通过http.HandleFunc路由、template渲染HTML、r.ParseF...
Go项目接入GitHubActions需分构建、测试、打包、推送四阶段:用setup-go固定1.22版本,docker/build-push-action显式指定linux/amd64平台,镜像打s...
该用CLI框架与否取决于工具复杂度:功能分支多、子命令3或需共享全局flag时选spf13/cobra;单任务型工具优先用原生flag。配置加载应显式声明顺序,禁用viper热重载;并发须用semap...
最直接方式是用prometheus/client_golang注册指标并挂载promhttp.Handler()到/metrics;必须调用MustRegister(),指标为全局单例,禁用弃用的pr...
在Go语言中,import语句作用域限定于单个源文件,即使同属一个package(如model),user.go和task.go也必须各自显式导入所需的包(如"appengine"...
Go模块无需中心仓库,只需Git路径与go.mod中模块名一致并打语义化tag即可被goget导入;模块名须为可解析的远程地址,首字母大写的标识符才可导出。
gomodtidy仅删除未被任何Go源文件import的模块及其子包,不删replace/exclude声明项、条件编译导入项及间接依赖项。
WaitGroup必须先wg.Add(n)再启动goroutine,且Done()须在goroutine内且仅调用一次;必须传指针避免复制;常与channel配合实现结果收集;复杂场景推荐errgro...
Go中database/sql错误判断需区分sql.ErrNoRows等预期错误与其他系统错误,事务Rollback()必须检查返回值,context超时错误应归类为临时故障,自定义错误类型比字符串匹...