pas*_*636 2 declaration function go
我读这个岗位约time.startTimer声明和定义。
从答案中,time.startTimer的声明src/time/sleep.go
如下:
func startTimer(*runtimeTimer)
Run Code Online (Sandbox Code Playgroud)
其定义src/runtime/time.go如下:
func startTimer(t *timer) {
if raceenabled {
racerelease(unsafe.Pointer(t))
}
addtimer(t)
}
Run Code Online (Sandbox Code Playgroud)
因此,似乎可以在一个.go文件中声明一个函数,然后在另一个.go文件中实现该函数。我尝试了相同的方法,例如,在a.go中声明了一个函数并在b.go中实现了该函数,但是当时,它总是失败go run a.go。这是正确的方法吗?如何声明在另一个.go文件中实现的功能?或中没有import任何内容。Go如何做到?sleep.gotime.go
谢谢
如果您在startTimer正文上方的那一行看,将会看到go编译器的特殊指令:
//go:linkname stopTimer time.stopTimer
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)//go:linkname localname importpath.name// go:linkname指令指示编译器使用“ importpath.name”作为源代码中声明为“ localname”的变量或函数的目标文件符号名称。由于此伪指令可以破坏类型系统和程序包的模块化,因此仅在导入了“不安全”的文件中启用该伪指令。
| 归档时间: |
|
| 查看次数: |
151 次 |
| 最近记录: |