比如定位到 time.Sleep,在源文件中如下:
```go
// Sleep pauses the current goroutine for at least the duration d.
// A negative or zero duration causes Sleep to return immediately.
func Sleep(d Duration)
```
它只有函数定义,并没有实现主体,而且它又不是一个interface。
不知道在源码中他们是如何实现。
我参考这个,自己在代码中定义类似的func定义,直接就编译错误。
不知道谁能告诉这是啥来着,不盛感激!
polaris的微信公众号文章里给出了原因。另外,回答@polaris的问题:“另外,想想为什么 time.Sleep 的实现要这么搞?”
我的理解是time.Sleep不能被context switch,这样的话睡眠的时间就不准了。所以得把实现写到runtime包里,这样Sleep的时间才准。
#4
更多评论
这个问题,我在 Go语言中文网 公众号发过文章讲解。https://mp.weixin.qq.com/s/XPRj87YT3U6hJvyY11y8jA 记得关注我们公众号哦!
#1