如何解决如何在Go handlerfunc中传递全局变量和Go Context
所以,我是编程和Go语言的新手,所以如果我做错了事,请原谅我。我正在用Go构建一个rest API。我正在使用GORM访问我的Postresql数据库,并且我想使用Redis存储JSON Web密钥。 Go Context是我尚不了解的东西,但是我需要它来根据如下文档在Redis中进行设置:
Set(ctx Context,key string,value interface{},expiration Duration) *StatusCmd
如我现在所见,我可以做两件事来访问Redis,Go Context和处理程序中的DB,而无需给它提供3个参数。将下面的Struct传递给处理程序
type env struct {
ctx *context.Context
db *gorm.DB
rdb *redis.Client
}
handler.ListItems(env{ctx: context.TODO(),db: gorm.DB,redis.Client})
或将变量存储在Go上下文中
ctx := context.WithValue(context.Background(),"db",gorm.DB)
ctx = context.WithValue(ctx,"rdb",redis.Client)
handler.ListItems(ctx)
所以我的问题是:在这种情况下,最佳实践是什么?为什么?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。