go:linkname注释讲解,使用场景
读源码的时候我们经常会读着读着 就变成了一个函数没有实现 之后上面带着//go:linkname上面的函数;
为什么会有这种函数呢?首先我们看一个time包的函数:
time.runtimeNano()
查看它的源码:

//go:linkname localname [importpath.name]
使用[importpath.name]作为源代码中声明的localname的变量或函数。由于该指令可以破坏类型系统和包模块化。因此只有引用了 unsafe 包才可以使用。
因此我们直接看: runtime.nanotime函数:



到这里我们知道了,//go:linkname 它有一个很重要的作用:
就是执行一些需要很高性能,但是为了代码简洁,而直接使用了其他包的执行方法,因为这些方法大部分都是一些基础语言中函数实现,因此都集成到了runtime包中。
如果加入我们开发go性能遇到瓶颈,真的需要使用到汇编指令,这块还是需要知道的,如果真的对go汇编比较熟悉的确是一个很牛X的选择(前提是对汇编和机器指令了如指掌)。
视频内容大部分就是如何在go项目中使用到//go:linkname,举例子:



就上面的简单例子就可以使用到go:linkname了,go汇编这块后续我也准备出几期视频讲解一下,当然是从简单的开始讲,毕竟汇编不是那么简单的。
有什么疑问可以留言,谢谢