Go语言 context包源码学习

打印 上一主题 下一主题

主题 934|帖子 934|积分 2802

你必须非常努力,才能看起来毫不费力!
微信搜索公众号[ 漫漫Coding路 ],一起From Zero To Hero !
前言

日常 Go 开发中,Context 包是用的最多的一个了,几乎所有函数的第一个参数都是 ctx,那么我们为什么要传递 Context 呢,Context 又有哪些用法,底层实现是如何呢?相信你也一定会有探索的欲望,那么就跟着本篇文章,一起来学习吧!
需求一

开发中肯定会调用别的函数,比如 A 调用 B,在调用过程中经常会设置超时时间,比如超过2s 就不等待 B 的结果了,直接返回,那么我们需要怎么做呢?
[code]// 睡眠5s,模拟长时间操作func FuncB() (interface{}, error) {        time.Sleep(5 * time.Second)        return struct{}{}, nil}func FuncA() (interface{}, error) {        var res interface{}        var err error        ch := make(chan interface{})  // 调用FuncB(),将结果保存至 channel 中        go func() {                res, err = FuncB()                ch
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

去皮卡多

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表