c语言编程笔录

首页 >   > 笔记大全

笔记大全

Go框架三件套GormKitexHertz怎么使用

更新时间:2023-11-30

何为Go框架三件套?

Go框架三件套是指三个不同的Go语言开发框架,分别是Gorm、Kitex和Hertz。这三个框架分别在Go语言开发过程中发挥着重要的作用。下面我们将分别介绍这三个框架的用途和使用方法。

Gorm框架的使用方法

Gorm是一个简单但功能强大的Go语言开发框架。它是一个对象关系映射(ORM)库,可以将程序的对象映射到数据库中。使用Gorm可以方便地进行数据库操作,并且支持多种数据库,例如MySQL、PostgreSQL、SQLite和SQL Server等。下面我们将以MySQL数据库为例,来介绍Gorm框架的使用方法。

package main

import (
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
)

type User struct {
	gorm.Model
	Username string
	Password string
}

func main() {
	dsn := "user:password@tcp(127.0.0.1:3306)/gorm_test?charset=utf8mb4&parseTime=True&loc=Local"
	db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
	if err != nil {
		panic("failed to connect database")
	}

	err = db.AutoMigrate(&User{})
	if err != nil {
		panic("failed to migrate")
	}

	user := User{Username: "user", Password: "password"}

	result := db.Create(&user)
	if result.Error != nil {
		panic("failed to create")
	}
}

上述代码建立了一个User结构体,并与MySQL数据库进行了连接。程序通过调用db.AutoMigrate(&User{})方法来自动迁移User结构体到数据库中。然后,代码创建了一个用户对象并插入到数据库中。

Kitex框架的使用方法

Kitex是一个高性能的Go语言开发框架,它是由阿里巴巴的T4团队开发的,旨在提供一个可扩展的微服务框架。使用Kitex可以方便地开发高性能的分布式应用程序,Kitex提供了多种服务治理的方式,例如负载均衡、服务发现和熔断等。

package main

import (
	"context"
	"fmt"
	"github.com/cloudwego/kitex/client"
	"github.com/cloudwego/kitex/pkg/klog"
	"github.com/cloudwego/kitex/pkg/loadbalance/random"
	mw "github.com/cloudwego/kitex/server/middleware"
	"github.com/cloudwego/kitex/server"
	"time"
)

type SayHelloReq struct {
	Name string
}

type SayHelloRsp struct {
	Message string
}

type HelloServer struct {
}

func (s *HelloServer) SayHello(ctx context.Context, req *SayHelloReq) (*SayHelloRsp, error) {
	klog.Infof("received request: %s", req.Name)
	return &SayHelloRsp{
		Message: fmt.Sprintf("Hello, %s", req.Name),
	}, nil
}

func main() {
	cli := client.New(
		client.WithHostPorts([]string{"127.0.0.1:8888"}),
		client.WithLoadBalance(random.New()),
		client.WithTimeout(time.Second*3),
	)

	req := &SayHelloReq{
		Name: "world",
	}

	rsp := &SayHelloRsp{}

	err := cli.Call(context.Background(), "HelloService", "SayHello", req, rsp)
	if err != nil {
		fmt.Println("failed to call remote service:", err)
		return
	}

	fmt.Println(rsp.Message)
}

上述代码实现了Kitex的客户端和服务端。代码中定义了一个HelloServer结构体,该结构体实现了SayHello方法,用于处理客户端发来的请求。客户端代码通过调用cli.Call方法来调用远程服务,并接收服务端返回的结果。

Hertz框架的使用方法

Hertz是一个用于构建高性能Restful API的Go语言开发框架。使用Hertz可以方便地创建和管理Restful API,并提供了高性能的网络处理和路由功能。Hertz支持多种HTTP请求方式,例如GET、POST、PUT和DELETE等。

package main

import (
	"fmt"
	"github.com/1inden/hertz"
	"net/http"
)

func main() {
	r := hertz.NewRouter()

	r.Get("/", func(w http.ResponseWriter, r *http.Request) {
		fmt.Fprintf(w, "Hello, world!")
	})

	http.ListenAndServe(":8080", r)
}

上述代码通过引入hertz包创建了一个路由器r,并在路由器中定义了一个GET方法。该方法接收一个处理函数,当收到GET请求时,将返回一个"Hello, world!"的字符串。代码通过调用http.ListenAndServe方法来启动服务器,监听8080端口。

总结

Go框架三件套包含了Gorm、Kitex和Hertz三个不同的Go语言开发框架,分别用于对象关系映射、高性能分布式应用程序和Restful API的开发。使用这些框架可以方便地进行高性能的Go语言开发,提高开发效率和代码维护性。

在实际使用中,我们要根据实际需求选择合适的框架。例如,如果我们需要进行数据库开发,可以使用Gorm;如果需要进行高性能分布式应用开发,可以使用Kitex;如果需要开发高性能的Restful API,可以使用Hertz。

需要注意的是,以上介绍的代码仅仅是框架使用的示例,并不一定适用于所有的开发场景。在实际开发中,我们需要根据具体情况进行适当的修改和调整,以达到更好的开发效果。