没有身体的功能是什么意思?

我正在阅读该程序包的代码,time然后想知道其func After(d Duration) <-chan Time工作原理。


我发现代码如下:


func After(d Duration) <-chan Time {

    return NewTimer(d).C

}


func NewTimer(d Duration) *Timer {

    c := make(chan Time, 1)

    t := &Timer{

        C: c,

        r: runtimeTimer{

            when: nano() + int64(d),

            f:    sendTime,

            arg:  c,

        },

    }

    startTimer(&t.r)

    return t

}

因此,我找到了startTimer-的定义,因为它startTimer没有函数体,这很奇怪。


func startTimer(*runtimeTimer)

我想知道:

  1. 真正的代码在哪里 startTimer

  2. 为什么这里可以存在“抽象方法”

  3. 为什么Go的作者这样写


慕森卡
浏览 203回答 1
1回答

FFIVE

1)该函数在这里定义:// startTimer adds t to the timer heap.//go:linkname startTimer time.startTimerfunc startTimer(t *timer) {&nbsp; &nbsp; if raceenabled {&nbsp; &nbsp; &nbsp; &nbsp; racerelease(unsafe.Pointer(t))&nbsp; &nbsp; }&nbsp; &nbsp; addtimer(t)}2)函数声明:函数声明可以省略主体。这样的声明为Go外部实现的功能(例如汇编例程)提供了签名。3)并非每种编程语言都可以完全表达自己的运行时(例如C可以)。Go运行时和标准库的某些部分在C中,部分在汇编中,而其他一些在中.goc,这是Go和C的没有充分记录的混合体。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go