Gin框架中单件Set GORM模型变量后在服务层中Get出来的变量如何读取字段
1. 运行环境
go 1.21.0
gin v1.9.1
[//]: <> (当前使用的Go
版本,及系统版本、系统架构?)
[//]: <> (使用go version
命令查看,期望的结果如:go 1.12, linux/amd64
)
2. 问题描述?
gin框架 gin.HandlerFunc
中间件中c.Set("user", user)
,服务层中u, _ := c.Get("user")
读取后的变量u
是UserInfo类型,但是无法调用u.Username
等
[//]: <> (代码问题的话,请提供一份最短的,可复现代码。或相关代码。)
func AuthMiddleware() gin.HandlerFunc {
...
var user models.UserInfo
mysql.DB.First(&user, claims.UserId)
...
// 用户存在 将用户写入上下文
c.Set("user", user)
c.Next()
}
}
// user 类型
type UserInfo struct {
gorm.Model
Username string `gorm:"username"`
Password string `gorm:"password"`
Email string `gorm:"email"`
}
// 读取中间件
u, _ := c.Get("user")
3. 您期望得到的结果?
正常取出
fmt.Println(u.ID, u.Username, u.Email)
中的值
4. 您实际得到的结果?
fmt.Println(u.ID, u.Username, u.Email)
// 未解析的引用 'ID' 'Username' 'Email'