1: Gin Context 详解
标准Context
golang 1.7 中官方给出了Context实现, 尤其在Gin中 其中点是可以链式传递共享变量. 我们只所以先讲Context, 是为了大家便于理解 Gin中如何将jwt 的token ID ,以及用户ID . 保存到 自定义的context中. 或者TraceID. 这样在后面的多个Goroutine中 共享, 另外一个重点是这些都是基于 gin 中间件实现.!这样在工程中非常便利.
自定义扩展Context
import ("context")// 定义全局上下文中的键type (transCtx struct{}userIDCtx struct{}traceIDCtx struct{})// NewTrans 创建事务的上下文func NewTrans(ctx context.Context, trans interface{}) context.Context {return context.WithValue(ctx, transCtx{}, trans)}// FromTrans 从上下文中获取事务func FromTrans(ctx context.Context) (interface{}, bool) {v := ctx.Value(transCtx{})return v, v != nil}// NewUserID 创建用户ID的上下文func NewUserID(ctx context.Context, userID strin