go源码中,只定义func名称和参数,没有主体。但是我自己写这样的东西编译会报错。

tangname · 2019-08-10 17:02:18 · 1708 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2019-08-10 17:02:18 的主题,其中的信息可能已经有所发展或是发生改变。

比如定位到 time.Sleep,在源文件中如下:

// 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定义,直接就编译错误。 不知道谁能告诉这是啥来着,不盛感激!


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1708 次点击  ∙  1 赞  
加入收藏 微博
6 回复  |  直到 2019-08-23 10:25:46
polaris
polaris · #1 · 6年之前

这个问题,我在 Go语言中文网 公众号发过文章讲解。https://mp.weixin.qq.com/s/XPRj87YT3U6hJvyY11y8jA 记得关注我们公众号哦!

focussoft
focussoft · #2 · 6年之前

学习了. 其实我觉得在应用级别不涉及底层只要拿来用就好. 非要研究接近底层的实现会得不偿失的.

a5687027
a5687027 · #3 · 6年之前

变量和函数,好像是必须要使用才可以,没有使用的话,会报错

BruceWangNo1
BruceWangNo1 · #4 · 6年之前
polarispolaris #1 回复

这个问题,我在 Go语言中文网 公众号发过文章讲解。https://mp.weixin.qq.com/s/XPRj87YT3U6hJvyY11y8jA 记得关注我们公众号哦!

polaris的微信公众号文章里给出了原因。另外,回答@polaris的问题:“另外,想想为什么 time.Sleep 的实现要这么搞?” 我的理解是time.Sleep不能被context switch,这样的话睡眠的时间就不准了。所以得把实现写到runtime包里,这样Sleep的时间才准。

tangname
tangname · #5 · 6年之前
polarispolaris #1 回复

这个问题,我在 Go语言中文网 公众号发过文章讲解。https://mp.weixin.qq.com/s/XPRj87YT3U6hJvyY11y8jA 记得关注我们公众号哦!

非常感谢大佬的回复!关注你的公众号了。

谢谢各位!

buguang01
buguang01 · #6 · 6年之前
polarispolaris #1 回复

这个问题,我在 Go语言中文网 公众号发过文章讲解。https://mp.weixin.qq.com/s/XPRj87YT3U6hJvyY11y8jA 记得关注我们公众号哦!

这种知识真高深,一般写业务的程序员都用不到

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传