3 回答

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]在我的機器上執(zhí)行時會產生。

TA貢獻1883條經驗 獲得超3個贊
根據定義,私有函數在聲明它們的包之外是不可訪問的。
如果您需要該包之外的函數,則必須將其公開(更改函數名稱,將第一個字母變?yōu)榇髮懀?/p>
例如:如果您已將其func doSomething()
重命名為func DoSomething()
并在包外使用<package name>.DoDomething()

TA貢獻1829條經驗 獲得超7個贊
您還可以添加公共代理功能。
例如:
你有包私有功能
func foo() int {
return 42
}
您可以在同一個包中創(chuàng)建公共函數,它將調用包私有函數并返回它的結果
func Bar() int {
return foo()
}
- 3 回答
- 0 關注
- 595 瀏覽
添加回答
舉報