我正在阅读 package 的代码,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 的作者会这样写
谢谢!