求教大佬,Golang Go语言中 func getg() uintptr 编译错误 missing function body

这个错误来自 GitHub 上的一个库
# github.com/v2pro/plz/gls
…/…/…/go/pkg/mod/github.com/v2pro/[email protected]/gls/goid.go:27:6: missing function body

func getg() uintptr
就这样一行
新人求教怎么解决。
求教大佬,Golang Go语言中 func getg() uintptr 编译错误 missing function body


更多关于求教大佬,Golang Go语言中 func getg() uintptr 编译错误 missing function body的实战教程也可以访问 https://www.itying.com/category-94-b0.html

5 回复

这个库的代码确实编译不过,func getg() uintptr 这个缺少方法体,貌似作者弃坑了,要不 clone 一份自己改一改,要不换吧

更多关于求教大佬,Golang Go语言中 func getg() uintptr 编译错误 missing function body的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


已经搞定了,是没有适配 Apple silicon 导致的,x86 是有适配的

原来是在调用汇编,我又口嗨了,抱歉

请问怎么解决的?

在Go语言中遇到 func getg() uintptr 编译错误提示 missing function body 通常意味着你试图声明或引用一个未在当前作用域或包中定义的函数,或者该函数应当是由Go运行时(runtime)提供的,但你的代码环境或构建方式不正确。

  1. Go运行时函数getg 是Go运行时包中的一个内部函数,用于获取当前goroutine的指针。这个函数通常不会直接在用户代码中调用,因为它是未导出的(即名称以小写字母开头)。如果你尝试在用户代码中调用这个函数,你会遇到编译错误,因为它对用户代码不可见。

  2. 解决方法

    • 如果你是在学习或调试Go的运行时:确保你的Go环境设置正确,并且你可能需要使用Go的源代码进行构建。
    • 如果你是在编写应用代码:避免直接调用Go的运行时函数。Go提供了丰富的标准库和API来处理goroutine和并发编程,应优先使用这些公开、稳定的接口。
  3. 检查代码:确认你的代码中是否有误打或误用了getg。如果是从某个教程或示例代码中复制的,请确保该代码适用于你的Go版本和环境。

  4. 文档和社区资源:查阅最新的Go文档和社区讨论,了解如何正确使用Go的并发特性,以及如何在需要时深入Go的运行时。

总之,避免直接调用Go的运行时函数,而是使用Go提供的标准API来处理并发和goroutine。

回到顶部