golang
已收录文章:14171篇
-
规约模式在Golang中通过接口和结构体实现,首先定义包含IsSatisfiedBy方法的规约接口,接着创建具体规约如AgeSpecification验证用户年龄,然后通过AndSpecification、OrSpecification等组合规约实现复杂规则,最后在业务逻辑中使用这些规约进行验证。应用场景包括电商商品筛选、金融系统条件验证等需组合判断的场景。避免过度复杂化的方法有保持规约单一职责、避免过度组合、适当抽象及选用合适模式。单元测试可通过testing包编写测试用例验证不同情况下的返回值是否符合414 收藏
-
在Golang中处理数据库错误时,应优先使用errors.Is判断特定错误类型。1.当查询应返回一行数据却无结果时,需检查err==sql.ErrNoRows或errors.Is(err,sql.ErrNoRows);2.推荐使用errors.Is因其可穿透errorwrapper;3.实际场景中可根据不同错误返回对应的HTTP状态码;4.避免通过err.Error()判断错误类型以防不稳定;5.批量查询时不触发sql.ErrNoRows应改用其他方式判断是否有数据。414 收藏
-
Golang的archive/zip库通过手动处理目录结构实现压缩与解压缩功能。压缩时,addFileToZip函数判断是否为目录并设置相应属性,若为目录则添加斜杠并设置权限;非目录文件则使用zip.Deflate算法压缩,并将文件内容写入zip包中。解压缩时,decompressFile函数根据文件信息判断是否为目录,若是则先创建对应目录结构,再将文件内容写入磁盘。此外,该库不支持密码保护,需使用第三方库如github.com/alexmullins/zip实现;性能优化可通过流式处理、调整压缩级别、并414 收藏
-
使用errors.Unwrap可逐层解包错误,提取最底层原始错误。通过循环调用Unwrap直到返回nil,可定位根本原因;但推荐优先使用errors.Is和errors.As进行类型判断与目标匹配,更安全简洁。414 收藏
-
GoModules从Go1.11起成为官方依赖管理工具,取代GOPATH模式。通过gomodinit初始化项目生成go.mod文件,导入包后运行gobuild自动下载依赖并更新go.mod和go.sum。推荐设置GO111MODULE=on以启用模块支持。使用goget添加或升级依赖,如gogetgithub.com/sirupsen/logrus@v1.9.0;运行gomodtidy清理未使用依赖,gomodvendor导出到vendor目录。配置GOPRIVATE可跳过私有模块校验,确保私有仓库拉取正414 收藏
-
简介 dolphinscheduler是一个可视化DAG工作流任务调度平台,在大数据领域做任务调用非常流行 提供了类似azkaban工作流调度,比azkaban更强的可视化DAG,支持大数据领域flink,spark,shell,python,java,scala,htt413 收藏