猿问

如何在 Golang 中访问另一个包的私有函数?

我想访问一个名为“pastry”的包的私有函数。但它生成错误为:对未导出标识符的无效引用

在main中指定golang私有函数的访问方式。


慕尼黑8549860
浏览 546回答 3
3回答

慕的地6264312

您可以使用go:linkname将相同/不同包中的函数映射到您的某个函数。例如像:package mainimport (    "fmt"    _ "net"    _ "unsafe")//go:linkname lookupStaticHost net.lookupStaticHostfunc lookupStaticHost(host string) []stringfunc main() {    fmt.Println(lookupStaticHost("localhost"))}[127.0.0.1 ::1]在我的机器上执行时会产生。

白板的微信

根据定义,私有函数在声明它们的包之外是不可访问的。如果您需要该包之外的函数,则必须将其公开(更改函数名称,将第一个字母变为大写)。例如:如果您已将其func doSomething()重命名为func DoSomething()并在包外使用<package name>.DoDomething()

千巷猫影

您还可以添加公共代理功能。例如:你有包私有功能func foo() int {&nbsp; &nbsp; return 42}您可以在同一个包中创建公共函数,它将调用包私有函数并返回它的结果func Bar() int {&nbsp; &nbsp; return foo()}
随时随地看视频慕课网APP

相关分类

Go
我要回答