golang
已收录文章:241篇
-
table-driven测试是Go语言中通过结构体切片组织多组输入输出用例并循环验证的测试方法。它将测试数据与逻辑分离,适用于同一函数的多种边界或异常场景。例如测试IsEven函数时,可定义包含name、input、want字段的测试表,再用t.Run执行每个子测试并校验结果;对于Divide等复杂函数,还能统一管理多个参数、期望值及错误标志,并通过math.Abs控制浮点比较精度。实践建议包括:为用例命名、使用具名结构体提升可读性、验证错误信息、添加注释说明意图、保持用例独立。该模式结构清晰、易扩展,是384 收藏
-
Golang通过sync.Pool对象重用、strings.Builder减少字符串拼接、预分配切片和map、自定义内存分配器、优化堆分配及逃逸分析等方法减少内存碎片,结合runtime监控和pprof分析,辅以操作系统大页内存、容器化隔离和定期重启等手段,可有效提升内存使用效率和程序性能。380 收藏
-
基于Git与GitHubActions实现Golang项目CI/CD,通过Webhook触发流程,集成代码检查、测试、Docker镜像构建及多环境部署,结合缓存优化与人工审批,提升发布效率与稳定性。368 收藏
-
Go语言通过goroutine和channel实现高并发HTTP请求,定义FetchResult结构体统一返回结果,主函数中遍历URL列表并发调用fetchURL函数,每个goroutine将结果发送到缓冲channel,主线程收集所有响应并打印状态,实现非阻塞高效并发。366 收藏
-
配置Golang私有仓库的核心是设置GOPRIVATE环境变量,例如goenv-wGOPRIVATE=git.mycompany.com/*,my.private.module,使Go工具链绕过公共代理和校验,直接通过VCS拉取私有模块;同时应设置GONOSUMDB避免校验和错误,确保私有模块顺利获取。365 收藏
-
Golang时间处理需关注时区与格式化,核心是time包。1.时区处理:使用time.LoadLocation加载时区(如"Asia/Shanghai"),通过time.In转换时间,避免错乱;2.格式化:采用参考时间"MonJan215:04:05MST2006"作为模板,用time.Format自定义输出;3.时间戳:time.Unix()实现时间与Unix时间戳(秒)互转,注意单位;4.时间计算:time.Add结合time.Duration进行加减操作;5.最佳实践:处理错误、存储UTC时间、使用364 收藏