我想访问一个名为“pastry”的包的私有函数。但它生成错误为:对未导出标识符的无效引用在main中指定golang私有函数的访问方式。
3 回答

慕的地6264312
TA贡献1817条经验 获得超6个赞
您可以使用go:linkname将相同/不同包中的函数映射到您的某个函数。例如像:
package main
import (
"fmt"
_ "net"
_ "unsafe"
)
//go:linkname lookupStaticHost net.lookupStaticHost
func lookupStaticHost(host string) []string
func main() {
fmt.Println(lookupStaticHost("localhost"))
}
[127.0.0.1 ::1]在我的机器上执行时会产生。

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

千巷猫影
TA贡献1829条经验 获得超7个赞
您还可以添加公共代理功能。
例如:
你有包私有功能
func foo() int {
return 42
}
您可以在同一个包中创建公共函数,它将调用包私有函数并返回它的结果
func Bar() int {
return foo()
}
- 3 回答
- 0 关注
- 545 浏览
添加回答
举报
0/150
提交
取消