为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
慕尼黑8549860 2021-12-20 19:21:22
我想访问一个名为“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]在我的机器上执行时会产生。


查看完整回答
反对 回复 2021-12-20
?
白板的微信

TA贡献1883条经验 获得超3个赞

根据定义,私有函数在声明它们的包之外是不可访问的。

如果您需要该包之外的函数,则必须将其公开(更改函数名称,将第一个字母变为大写)。

例如:如果您已将其func doSomething()重命名为func DoSomething()并在包外使用<package name>.DoDomething()


查看完整回答
反对 回复 2021-12-20
?
千巷猫影

TA贡献1829条经验 获得超7个赞

您还可以添加公共代理功能。


例如:


你有包私有功能


func foo() int {

    return 42

}

您可以在同一个包中创建公共函数,它将调用包私有函数并返回它的结果


func Bar() int {

    return foo()

}


查看完整回答
反对 回复 2021-12-20
  • 3 回答
  • 0 关注
  • 545 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号