说明
python有元类概念,在定义db模型时,相当方便,极大简化代码
go中没有元类概念, gorm有模型定义,看看它怎么实现,能否借鉴
gorm原理
-
gorm运用了结构体标签,通过reflect获取标签内容,这是基本原理,这里不做介绍。
-
关注它如何运用这些特性,借鉴使用
-
直接分析源码太复杂,绕的路径太多。基于gorm模型定义最核心的代码,写一个小例子,展示gorm的用法,这也是我需要借鉴的地方
-
gorm所有的接口db.Create, db.Model,…最终都是调用schema.Parse
package main
import (
"fmt"
"gorm.io/gorm"
"gorm.io/gorm/schema"
"reflect"
"sync"
)