gorrilla Context包深入学习

导语

做过web开发的同学肯定都知道,我们经常使用 r *http.Request 这个变量来获取我们希望获得的参数,但是我们经常遇到这样一个场景,我们需要为我们的r设置更多的key-value形式的附加值,一般我们都会存储在一个Map对象中,用的时候再从里面取出,Golang考虑到这样一个场景,为我们提供了一个context,这里的context并不是上下文的意思,属于另外一个这个包github.com/gorilla/context

安装

使用这个库之前,我们同样用Golang中的经典获取包的方式go get命令来获取

go get github.com/gorilla/context

使用方法

设置
context.Set(r, "user", "wuyazi")
context.Set(r, "age", 21)

在上面的这个函数里,r即是*http.Request我们设置了一个key为user,value为wuyazi,另一个key为age,value为21。

获取
user := context.Get(r, "user").(string)
age := context.Get(r, "age").(int)

获取我们使用一个Get()的函数,该函数会返回一个interface{}类型的值,然后我们使用断言,进行类型转换,就能得到我们设置的数据了。

底层原理学习——源码剖析

Set()函数

这个函数接收了3个参数,这3个参数见名知意,这里不再过多介绍,在这个函数里,我们首先可以看到一个关于写入的锁来保证数据的安全性,接着判断我们传入的r是否已经存在了我们的data变量里。这里的data是一个双层嵌套的map,定义如下所示
make(map[*http.Request]map[interface{}]interface{})interface{}类型则表示了我们可以存入各

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值