Доступ к функции на другой структуре - PullRequest
0 голосов
/ 18 января 2019

Использование Go 1.11.x с платформой echo.

У меня есть следующая структура и функция

type AccountController struct {
  ....
}

func (c *AccountController) ActiveAccountID() int {
  ....
  return 5
}

Теперь я хочу получить доступ к ActiveAccountID из другой структуры, этокак я это сделал,

type TestController struct {
   Account *AccountController
}

func (c *TestController) AddData(ec echo.Context) error {
  ....
  id := c.Account.ActiveAccountID()     
  ....
}

Но когда я печатаю / использую id var, он просто выдает ошибку указателя памяти?

Я пытался контроллером учетных записей удалить указатель, ноу меня все еще есть проблема с указателем памяти.Так что я делаю не так?

Спасибо,

1 Ответ

0 голосов
/ 19 января 2019

Обратите внимание на структуру вашей структуры

type TestController struct {
   Account *AccountController
}

Учетная запись является указателем.Он инициализируется до nil, поэтому, если вы никогда не установите его, чтобы указывать на что-то, он всегда будет равен нулю, и вы получите ошибку разыменования нулевого указателя при попытке вызвать метод для него, подобный этому

// c *TestController
c.Account.ActiveAccountID()

Как / когда вы устанавливаете его, зависит от вашего варианта использования.

Также в зависимости от вашего варианта использования вы можете изменить его с указателя на встроенную структуру

type TestController struct {
   Account AccountController
}

Таким образом, этовсегда внутри структуры, но если вы назначите ее откуда-то еще, она будет скопирована.В зависимости от вашего варианта использования это может быть нежелательно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...