2017-02-05 6 views
1

У меня есть основная функция, где я запускаю переменную, клиент. Например:Пропустить объект для структуры в другом пакете

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() 

} 

Так что мой вопрос, как я могу использовать клиент (из основных) в моем пакете?

ответ

1

В пакете отдыха вы должны добавить функцию-конструктор, как:

func NewAssetHandler(mc my.Client) AssetHandler { 
    return AssetHandler{mc} 
} 

Затем вы должны создать экземпляр обработчика от вашей основной функции.

В противном случае вам необходимо создать отдельный пакет, в котором хранятся глобальные переменные. Сам основной пакет не может быть использован для этого, потому что к нему нельзя получить доступ из другого места.