为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
慕森卡 2021-05-21 16:10:05
我正在阅读该程序包的代码,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)我想知道:真正的代码在哪里 startTimer为什么这里可以存在“抽象方法”为什么Go的作者这样写
查看完整描述

1 回答

?
FFIVE

TA贡献1797条经验 获得超6个赞

1)该函数在这里定义:


// startTimer adds t to the timer heap.

//go:linkname startTimer time.startTimer

func startTimer(t *timer) {

    if raceenabled {

        racerelease(unsafe.Pointer(t))

    }

    addtimer(t)

}

2)函数声明:


函数声明可以省略主体。这样的声明为Go外部实现的功能(例如汇编例程)提供了签名。


3)并非每种编程语言都可以完全表达自己的运行时(例如C可以)。Go运行时和标准库的某些部分在C中,部分在汇编中,而其他一些在中.goc,这是Go和C的没有充分记录的混合体。


查看完整回答
反对 回复 2021-05-31
  • 1 回答
  • 0 关注
  • 202 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信