GoLang
1、简介
·5012 字·11 分钟·
loading
·
loading
GoLang
GoWeb
Gin
Gin 简介 # Gin是用Go语言编写的一个HTTP Web框架,它是一个轻量级的、高性能的框架,特别适合开发API服务。作为目前Go生态中最受欢迎的Web框架之一,Gin以其极高的性能和生产级的可靠性而闻名。
2、viper
·743 字·2 分钟·
loading
·
loading
GoLang
常用包
第三方包
viper 是一个配置解决方案,拥有丰富的特性:
支持 JSON、TOML、YAML、HCL、envfile、Java properties 等多种格式的配置文件; 可以设置监听配置文件的修改,修改时自动加载新的配置; 从环境变量、命令行选项和io.Reader中读取配置; 从远程配置系统中读取和监听修改,如 etcd/Consul; 代码逻辑中显示设置键值。 安装 # go get -u github.com/spf13/viper 读取配置 # 使用默认实例读取配置文件
12、cron
·962 字·2 分钟·
loading
·
loading
GoLang
常用包
第三方包
cron是golang实现定时任务比较好的库, 这个库提供了一个简单而强大的接口,用于创建和管理基于cron表达式的定时任务。cron库的主要特点有:
2、gorm
·8020 字·17 分钟·
loading
·
loading
GoLang
GoWeb
数据库
ORM概念介绍 # 虽然Go的原生SQL包database/sql提供了最大的灵活性和控制力,但在实际项目中,我们经常需要一种更便捷、更安全、更贴近业务逻辑的方式来操作数据库。这就是ORM(对象关系映射)技术的用武之地。
11、errors
·955 字·2 分钟·
loading
·
loading
GoLang
常用包
第三方包
pkg/errors # github.com/pkg/errors 是 Go 语言中一个广泛使用的错误处理库,它通过**错误包装(Error Wrapping)和堆栈追踪(Stack Trace)**功能,显著增强了错误信息的可读性和调试效率。虽然不是 Go 官方包,但却被很多团队当作事实标准来使用。
6、反射
·7375 字·15 分钟·
loading
·
loading
GoLang
GoLang高级
反射的基本概念 # 在Go编程中,反射(Reflection)是一项强大而复杂的特性,它允许程序在运行时检查和修改自己的结构和行为。虽然在日常编程中我们可能会尽量避免过度使用反射(因为它会带来复杂性和性能损失),但了解反射机制对于理解许多高级库和框架的工作原理至关重要。
4、encoding
·1225 字·3 分钟·
loading
·
loading
GoLang
常用包
标准包
golang中内置encoding包的各个子包,提供了各种数据与编码、文本格式之间转换的方法
10、logrus
·1411 字·3 分钟·
loading
·
loading
GoLang
常用包
第三方包
Logrus 是目前 GitHub 上 Star 数量最多的 Go 日志库, 具有如下特点:
与 Go log 标准库 API 完全兼容,这意味着任何使用 log 标准库的代码都可以将日志库无缝切换到 Logrus。 支持七种日志级别:Trace、Debug、Info、Warn、Error、Fatal、Panic。 支持结构化日志记录(key-value 形式,容易被程序解析,如 JSON 格式),通过 Filed 机制进行结构化的日志记录。 支持自定义日志格式,内置两种格式 JSONFormatter(JSON 格式) 和 TextFormatter(文本格式),并允许用户通过实现 Formatter 接口来自定义日志格式。 支持可扩展的 Hooks 机制,可以为不同级别的日志添加 Hooks 将日志记录到不同位置,例如将 Error、Fatal 和 Panic 级别的错误日志发送到 logstash、kafka 等。 支持在控制台输出带有不同颜色的日志。 并发安全。 安装 # go get -u github.com/sirupsen/logrus 简单使用 # package main import "github.com/sirupsen/logrus" func main() { logrus.SetLevel(logrus.TraceLevel) logrus.Trace("trace msg") logrus.Debug("debug msg") logrus.Info("info msg") logrus.Warn("warn msg") logrus.Error("error msg") logrus.Fatal("fatal msg") logrus.Panic("panic msg") } logrus的使用非常简单,与标准库log类似。logrus支持更多的日志级别:
7、项目实战
·742 字·2 分钟·
loading
·
loading
GoLang
GoWeb
Gin
技术选型 # Gin:Web 框架 Gorm:ORM 框架 Go-Redis:Redis 框架 Logrus:日志框架 Wire:依赖注入管理 # Gin go get -u github.com/gin-gonic/gin # Go-Redis go get -u github.com/redis/go-redis/v9 # Gorm go get -u gorm.io/gorm # 数据库驱动 go get -u gorm.io/driver/mysql # Gorm-Gen go get -u gorm.io/gen # Logrus go get -u github.com/sirupsen/logrus # logrus-formatter go get -u github.com/antonfisher/nested-logrus-formatter # Wire-Cli go install github.com/google/wire/cmd/wire@latest # Wire go get -u github.com/google/wire 项目结构 # ├── cmd # cmd │ ├── gorm_gen.go # gorm代码生成 │ ├── main.go # main.go │ └── wire # wire │ ├── wire.go # 依赖注入管理 │ └── wire_gen.go # wire生成 ├── config # 配置目录 │ └── application.yml # 应用配置文件 ├── go.mod # go.mod ├── go.sum # go.sum ├── internal # 内部包 │ ├── config # 应用配置 │ │ ├── config.go # 配置文件读取 │ │ └── time.go # 自定义时间序列化 │ ├── dao # dao │ │ ├── gen.go # gorm生成 │ │ └── sys_user.gen.go # gorm生成 │ ├── database # 持久化层 │ │ ├── mysql.go # MySQL │ │ ├── provider_set.go # Wire ProviderSets 分组管理 │ │ └── redis.go # Redis │ ├── dto # DTO │ │ └── response.go # 控制层统一响应结构 │ ├── engine # 管理GIN引擎及路由 │ │ ├── api_v1 # V1版本路由 │ │ │ └── routes.go # 统一管理路由 │ │ ├── engine.go # GIN引擎管理 │ │ └── middleware # GIN中间件 │ │ └── error.go # 全局异常处理中间件 │ ├── handler # 控制层处理器 │ │ ├── provider_set.go # Wire ProviderSets 分组管理 │ │ └── sys_user.go # sys_user 处理器 │ ├── model # 模型 │ │ └── sys_user.gen.go # sys_user 模型 │ └── service # 业务层 │ ├── provider_set.go # Wire ProviderSets 分组管理 │ └── sys_user.go # sys_user 业务层 使用方式 # 管理路由 # 所有的路由均在engine/api_v1下管理
3、中间件
·4800 字·10 分钟·
loading
·
loading
GoLang
GoWeb
Gin
中间件简介 # 在Web应用开发中,中间件(Middleware)是位于应用程序与服务器之间的软件组件,能够拦截HTTP请求和响应,并执行特定的逻辑处理。