手表网站制作,网站集群建设解决方案,免费空间申请free,企业为什么要做网络营销推广概述#xff1a;
在学习GORM过程中#xff0c;总是在调用结构体和文件导入这里出错#xff0c;所以整理了以下文档用于梳理变量/结构体命名规则和import导入的知识点
一、变量/结构体命名规则
变量/结构体都遵守同样的命名规则#xff1a;可见性由首字母大小写决定 大写…概述
在学习GORM过程中总是在调用结构体和文件导入这里出错所以整理了以下文档用于梳理变量/结构体命名规则和import导入的知识点
一、变量/结构体命名规则
变量/结构体都遵守同样的命名规则可见性由首字母大小写决定 大写首字母公开的可导出的其他包可以访问它。 小写首字母私有的不可导出的 只能在定义它的包内部访问 命名变量 变量命名应遵循Go的命名惯例一般使用驼峰式命名法。局部变量通常使用小写字母开头user而导出的结构体使用大写开头User。这样命名后你可以直接使用包名加类型名的方式在其他包中引用这些类型或函数。
附录 基本规则
小驼峰 aVar局部变量(包括函数参数 大驼峰 AndVar导出的变量/结构体、类型、函数、方法等
二、GROM实际案例
下面是如何在main.go中导入并使用/models包中的User结构体的具体步骤
1、定义User结构体
假设有一个位于/models/user.go文件其中定义了User结构体 注这里因为User是大写的表明是可以导出的// 文件路径: /models/user.go
package modelstype User struct {Name stringAge int
}2、 在main.go中导入User结构体以及对应的操作
在main.go中你可以这样导入并使用User结构体 ···
package mainimport (fmtyour-module-name/models // 替换成自己的模块名
)func main() {var user models.Useruser.Name Aliceuser.Age 30fmt.Println(user)
}总结
在main.go中使用models包中的User结构体你需要先导入models包然后使用models.User来创建User实例。确保User结构体是导出的即首字母大写这样才能在包外部访问它。
三、结构体中的公开和私有字段
//path:/models/user.go
type User struct {Name string // 公开字段age int // 私有字段
}公开和私有字段类似 java对象 的public和private属性 公开字段能自由地读取和修改值 私有字段不能直接读取或修改值
//path:main.go
func main() {user : models.User{Name: Alice}user.Name Bob // 可以修改因为 Name 是公有字段// user.age 30 // 编译错误不能修改因为 age 是私有字段fmt.Println(user.Name)//fmt.Println(user.age)//错误
}四、GORM中的gorm.Model和自动迁移功能
1 gorm.Model、
//path:/models/user.go
type User struct {gorm.ModelUsername stringPassword string
}User结构体包含嵌入字段gorm.Model:一个嵌入式基础模型,GORM会自动为你的数据库表添加y一些基础字段
ID唯一标识符,主键CreatedAt被创建的时间UpdatedAt最后一次更新的时间DeletedAt被删除的时间用于支持软删除标记为删除而非DB实际删除
3、 GORM自动迁移技术
GORM自动迁移功能根据go程序中定义的结构体创建对应的数据库表 //连接数据库db, err : gorm.Open(sqlite.Open(gotest1.db), gorm.Config{})//使用Gorm自动迁移功能db.AutoMigrate(models.User{})4、硬删除和软删除
硬删除实际地从数据库删除软删除没有实际擅长只是设置DeletedAt为当前时间标记为已删在查询中会被GORM忽略