我有一个主要功能,我在其中初始化一个变量,一个客户端。例如:

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}
}

然后,您必须从主函数实例化处理程序。

否则,您将不得不创建一个单独的包来存储全局变量。主程序包本身不能用于此目的,因为它不能从其他地方访问。

10-05 23:35