首先在于知道它用在哪里,然后才是理解它的设计和实现。
困惑了两年多的时间,翻遍了无数的文章,有价值者十不足一。
无非是分析完实现细节之后,再拿一个hello world举例子,然后就自欺欺人地结束了。hello world自然是经不起推敲的。
就像一个少年手握屠龙之技,却不知道龙在哪里。想要演示其巨大威力,观众看到的却是五毛特效。
想起多年前学习电动力学的场景。学生不理解,教书的也不懂。
结果就是考试要有题目怎么办,把往年的题目再搬出来,负责任的还换个名字和场景(改数字是不大敢的),不负责任的原样托出。
于是就诞生了奇迹:越是难度系数高的科目,反而挂科的人少,反正翻来覆去就那几个题目。
翻来覆去的几个题目就是电动力学版本的hello world,给不了学生真正的科学精髓。
同样hello world的文章也只是无谓地增加信息熵,毫无价值。
一开始不打算多说什么。不少人悄悄的划过,想来一定会有一部分是兴冲冲地进来骂咧咧地出去。那就多说几句吧。
> Package context defines the Context type, which carries deadlines, cancellation signals, and other request-scoped values across API boundaries and between processes.
不错,文档一开始就在说`deadline`、`cancellation`,但是`cancellation`带有歧义,造成了长期以来的误解,它达不到很多人预期的那种“取消执行”。
因此当`cancellation`占据了所有的目光时,已经输了一半了。再盯着`Done()`不放时,另一半也输了。
更准确的说法是通过Context达到`unblocking`和`blocking`分离的目的,类似于读写分离,强调的是分离而不是“取消”。
#1