Go框架进一步学习
这是我参加「第五届青训营」伴学笔记创作活动的第 5 天
Gorm
Gorm是一个在Go语言中使用的对象关系映射(ORM)框架。它允许开发人员在Go中使用面向对象的方式与数据库交互,而不需要编写复杂的SQL语句。Gorm支持多种数据库,包括MySQL,PostgreSQL,SQLite等。
基本用法:
-
安装Gorm:使用Go的包管理工具,如"go get -u github.com/jinzhu/gorm"
-
导入包:在需要使用Gorm的文件中导入 "github.com/jinzhu/gorm"
-
初始化数据库连接:使用gorm.Open()函数连接数据库,并将连接赋值给一个变量
-
定义数据结构体:定义一个结构体来映射数据库表中的字段
-
数据操作:使用Gorm提供的API完成对数据库的增删改查操作。
例如:
package main import ( "fmt" "github.com/jinzhu/gorm" _ "github.com/jinzhu/gorm/dialects/mysql" ) type User struct { ID int Name string } func main() { db, err := gorm.Open("mysql", "root:password@tcp(localhost:3306)/dbname?charset=utf8&parseTime=True&loc=Local") if err != nil { fmt.Println(err) return } defer db.Close() db.AutoMigrate(&User{}) db.Create(&User{Name: "John"}) var user User db.First(&user, 1) fmt.Println(user) }这是一个简单的例子,在这个例子中,我们连接了本地的 MySQL 数据库,然后使用Gorm的AutoMigrate函数创建了一个名为"users"的表,并在表中创建了两个字段:"ID"和"Name"。
然后我们使用了Gorm的Create函数将一个新的用户数据插入到表中,并使用First函数查询表中第一条记录。
除了上面提到的几个函数,Gorm还提供了很多其它的数据库操作函数,如Find、Where、Update、Delete等,可以根据需要选择使用。
此外,Gorm还支持高级功能,如关联关系、预加载、事务等,可以满足复杂的数据库操作需求。
例如:
- 关联关系:Gorm支持一对一、一对多、多对多等多种关联关系。在定义结构体时,可以使用gorm的相关标签来定义关联关系,如
gorm:"ForeignKey:UserRefer" - 预加载:Gorm支持预加载,可以在查询数据时预先加载关联关系的数据,避免N + 1查询问题。
- 事务:Gorm支持事务,可以通过
db.Begin()开始一个事务,通过db.Commit()提交事务,通过db.Rollback()回滚事务。 - 日志: Gorm支持日志记录,可以通过
db.LogMode(true)开启日志记录,记录数据库操作的SQL语句。 - 钩子: Gorm支持钩子函数,可以在数据操作前后执行自定义的函数,用于扩展数据操作的功能。
- 关联关系:Gorm支持一对一、一对多、多对多等多种关联关系。在定义结构体时,可以使用gorm的相关标签来定义关联关系,如
Kitex
Kitex是字节内部的Golang微服务RPC框架,具有高性能、强可扩展性的主要特点,支持多协议并拥有丰富的开源拓展。
它提供了简单易用的API来构建和管理微服务。Kitex提供了微服务的基本组件,如服务发现、负载均衡、服务配置等,并且支持与其它微服务框架,如Kubernetes, Consul等集成。
基本用法:
-
安装Kitex: 使用Go的包管理工具,如"go get -u github.com/go-kitex/kitex"
-
导入包:在需要使用Kitex的文件中导入"github.com/go-kitex/kitex"
-
初始化Kitex:使用kitex.NewKitex()函数初始化Kitex,并将其赋值给一个变量
-
注册服务:使用Kitex的Register函数注册服务,并使用Handle函数处理请求
-
启动服务:使用Kitex的Run函数启动服务
例如:
package main import ( "github.com/go-kitex/kitex" "github.com/go-kitex/kitex-examples/hello" ) func main() { k := kitex.NewKitex() k.Register(hello.HelloService{}) k.Run() }这是一个简单的例子,在这个例子中,我们创建了一个Kitex实例,并使用Register函数注册了一个名为HelloService的服务,然后使用Run函数启动服务。
Kitex的用法非常简单易懂,可以帮助开发者快速构建和管理微服务。
它也有一些拓展用法,例如:
- 服务配置: Kitex支持从文件或环境变量加载配置,可以通过
kitex.SetConfigFile()或kitex.SetEnvPrefix()来设置配置。 - 服务发现: Kitex支持使用Consul或Zookeeper作为服务发现机制,可以通过
kitex.UseConsul()或kitex.UseZookeeper()来设置。 - 熔断器: Kitex支持使用Hystrix作为熔断器,可以通过
kitex.UseHystrix()来设置 - 服务熔断: Kitex支持熔断机制,可以通过
kitex.CircuitBreaker()函数来设置 - 负载均衡: Kitex支持多种负载均衡策略,可以通过
kitex.SetBalancer()来设置 - 数据压缩: Kitex支持数据压缩,可以通过
kitex.UseCompress()来设置 - 日志: Kitex支持自定义日志处理,可以通过
kitex.SetLogger()来设置
- 服务配置: Kitex支持从文件或环境变量加载配置,可以通过