我有一个主要功能,我在其中初始化一个变量,一个客户端。例如:
func main() {
myClient := my.MustNewClient("localhost")
}
现在,我想将此客户端传递给另一个软件包,但是由于某种原因,我无法弄清楚该如何做。我的包裹看起来像这样:
package rest
import (
"net/http"
"github.com/Sirupsen/logrus"
)
type AssetHandler struct {
mc my.Client
}
func (f AssetHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
logrus.Info("bla")
// here I want to use the client
mc.SomeFunctionIntheClient()
}
所以我的问题是,如何使用我的软件包中的客户端(主要)?
最佳答案
在其余包中,您必须添加一个构造函数,例如:
func NewAssetHandler(mc my.Client) AssetHandler {
return AssetHandler{mc}
}
然后,您必须从主函数实例化处理程序。
否则,您将不得不创建一个单独的包来存储全局变量。主程序包本身不能用于此目的,因为它不能从其他地方访问。