GO语言框架 1 | 青训营笔记

103 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天

在初步学习了go语言的基本知识后,开始去了解go web开发常用到的框架三件套,他们可以简化我们的开发。

1. 框架三件套

  • Gorm

    • Gorm 是一个已经迭代了10年+的功能强大的ORM框架,在字节内部被广泛使用并且拥有非常丰富的开源扩展。
  • Kitex

    • Kitex 是字节内部的 Golang 微服务 RPC 框架,具有高性能、强可扩展的主要特点,支持多协议并且拥有丰富的开源扩展。
  • Hertz

    • Hertz 是字节内部的 HTTP 框架参考了其他开源框架的优势,结合字节跳动内部的需求,具有高易用性、高性能、高扩展性特点。

这里涉及到的一些知识概念比如orm ,rpc等都需要去学习和了解 ORM : Object Relational Mapping(对象关系映射),其主要作用是在编程中,把面向对象的概念跟数据库中表的概念对应起来,

对于数据来说,最重要最常用的是表∶表中有列,orm就是将一张表映射成一个类,表中的列映射成类中的一个类。java .、 python,但是针对go语言而言,struct,就是列如何映射,是因为列可以映射成struct中的类型,int->int,但是有另一个问题?就是数据库中的列具备很好的描述性,但是struct有tag。执行sql,需要我们有足够的sql语句基础、需要我们懂得不同的数据的sql

orm的优缺点

优点:

提高了开发效率。 屏蔽sql细节。可以自动对实体Entity对象与数据库中的Table进行字段与属性的映射;不用直接SQL编码 屏蔽各种数据库之间的差异

缺点:

orm会牺牲程序的执行效率和会固定思维模式 太过依赖orm会导致sql理解不够 对于固定的orm依赖过重,导致切换到其他的orm代价高

Gorm入门

可参考官方文档:gorm.io/

声明模型

模型定义

模型是标准的 struct,由 Go 的基本数据类型、实现了 Scanner 和 Valuer接口的自定义类型及其指针或别名组成

gorm.Model

GORM 定义一个 gorm.Model 结构体,其包括字段 ID、CreatedAt、UpdatedAt、DeletedAt

具体的操作还有很多,就不一一介绍了

参考

官方文档:gorm.io/