例如,如何调用未导出的包函数 包函数hello()定义为:
$response = $client->request(
'GET',
$Url,
['query' => $body],
[
'headers' => [
'Content-Type' => 'application/x-www-form-urlencoded'
]
],
['allow_redirects' => FALSE]
);
$responseHomeNetworkAPI = $response;
echo $response->getStatusCode();
主要包裹有来电:
package testlib
import "fmt"
func hello() {
fmt.Println("Hello testlib")
}
当然,这个程序是不正确的。 我google了很多,很多人提到反射包可以用来调用一个未导出的函数,如:
package main
import (
_ "reflect"
"testlib"
)
func main() {
testlib.hello()
}
但是所有的例子都是基于一个对象(即一个结构),而不是一个包。 我的问题是我要调用一个包函数,而不是一个对象函数。感谢。
答案 0 :(得分:9)
你不能。这是未导出功能的目的。只有声明包才能调用它。
如果您是包编写者,并且需要从其他包中调用它,则将其导出。如果不是您的包裹,请不要试着打电话。它不属于行李的API,它是一个实施细节,因此它可能随时发生变化(它可能会改变,它的签名可能会改变,它可能会被重命名或它可能会在任何时候完全删除。)