golang中的空函数

golang中的空函数,go,Go,正在查看源代码go源代码,下面是sleep.go(打包时间)的一段代码片段: func Sleep(d Duration)怎么可能没有任何实现?在哪里可以找到睡眠功能的确切实现 编辑:答案可以在@DaveC提供的2个链接中找到。但是,请阅读下面的注释,了解为什么即使在引导Go(1.5)之后空函数也不能替换为Go的解释。考虑到Sleep()的功能(它会在给定的时间内取消golang线程的调度),您不能在Go中表示它,因此,它可能是作为某种编译器本质实现的 哇,这里有很多反对票。看起来睡眠实际上是这

正在查看源代码go源代码,下面是sleep.go(打包时间)的一段代码片段:

func Sleep(d Duration)怎么可能没有任何实现?在哪里可以找到睡眠功能的确切实现


编辑:答案可以在@DaveC提供的2个链接中找到。但是,请阅读下面的注释,了解为什么即使在引导Go(1.5)之后空函数也不能替换为Go的解释。

考虑到
Sleep()
的功能(它会在给定的时间内取消golang线程的调度),您不能在Go中表示它,因此,它可能是作为某种编译器本质实现的


哇,这里有很多反对票。看起来睡眠实际上是这样。

也谢谢你指出这两个问题,它确实帮助了@Dave C。那么这是否意味着一旦golang启动(在1.5中,是否可以用Go替换ASM),这些空函数将被实际实现所取代?我对编译器不太了解。如果这个评论没有意义,我很抱歉。我想所有的汇编程序都会保留下来。如果它不是时间关键型的,或者在汇编程序中使用它不是更容易/必要的,那么它很可能已经是Go(或者C,正如您所说的,它已经成为Go for 1.5),这是有意义的。非常感谢。汇编仍然需要使用特定于体系结构的机器指令来编写。无论“汇编程序”是用什么编写的,您都无法用Go替换汇编代码的实际逻辑。看看运行时源代码中的
*$GOOS\u$GOARCH.s
文件。答案的问题是因为不需要猜测,它写得恰到好处。然而,Sleep是这样一个函数的有趣例子,因为它不能用go编写。
package time

// 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) 
// runtimeNano returns the current value of the runtime clock in nanoseconds.
func runtimeNano() int64