「这是我参与2022首次更文挑战的第17天,活动详情查看:2022首次更文挑战」
生命不息,学习不止
题外话
又上班了,今天是真滴冷啊,一出门我是真滴想直接请假了,但是还有工作没有做完,啊啊啊啊啊,苍天啊,赐我一个财富自由的机会吧,我献祭掘金广大网友们每人5斤体重……
废话不多说,上货
开源项目——go-gin-api
go-gin-api
这是一个主要以gin框架为主,包含了一些常用功能,包括日志,菜单,权限,代码生成的功能的一个项目。
main.go
别问我为什么下面都是波浪线,因为我手欠把项目删除了,这是新clone下来的,着急写嘛将就一下而已啦
import中包含了导入的相关包,包括了内置包(未飘红的)和第三方包(飘红的),怎么样,这下感谢我着飘红的线了吧
还是这张图,context包还没有讲完,还得用呢……
context
昨天已经说完了Context接口的四个内置函数,如下
今天就来说一说Context的衍生方法
对服务器的传入请求应该创建一个上下文,对服务器的传出调用应该接受一个上文。
它们之间的函数调用链必须传播 Context,可选择将其替换为使用 WithCancel、
WithDeadline、WithTimeout 或 WithValue 创建的派生 Context。
当一个上下文被取消时,所有从它派生的上下文也被取消。
---译自官方文档
很清晰了,这四个衍生方法就是 WithCancel、WithDeadline、WithTimeout 和 WithValue。
WithCancel函数定义如下,主要用于获取一个父级Context的子Context,以及取消取消Context的函数。
func WithCancel(parent Context) (ctx Context, cancel CancelFunc)
这么说有点绕,就是拿一个Context作为参数进行传递,会返回该Context的子Context和取消这个Context的函数。
WithDeadline函数,和WithCancel唯一的区别就是多传递了一个截止时间参数,意味着到了这个时间点,会自动取消Context。
func WithDeadline(parent Context, d time.Time) (Context, CancelFunc)
WithTimeout和WithDeadline基本上一样,这个表示是超时自动取消,是多少时间后自动取消Context的意思。
func WithTimeout(parent Context, timeout time.Duration) (Context, CancelFunc)
取消Context会释放与其关联的资源,为了保证效率,如果在超时时间之前就已经完成了相关操作,我们可以通过调用函数提前取消Context。
WithValue函数和取消Context无关,它是为了生成一个绑定了一个键值对数据的Context,这个绑定的数据可以通过Context.Value方法访问到。
func WithValue(parent Context, key, val interface{}) Context
net/http
这个包也很是常见了,只要我们要进行网络开发,基本都要用到这个包,但单独拿出来讲有点太生硬了,我准备直接在后面带着代码去讲。
time包
time作为一个工具包,一样代码实际场景见
下回预告
下一回咱们就简单说说这几个第三方的包,然后咱们就直接上代码,奥里给。
下一篇就讲,敬请期待
大家看完发现有什么错误,写在下面吧!跟我黑虎阿福比划比划!