Я пытаюсь вручную создать экземпляр типа ReactionAddedEvent, указанный here, in nlopes' Go Slack library. Тем не менее, тип реакции подтипа не поддерживается, что приводит меня к ошибке ./bot_test.go:111: cannot refer to unexported name slack.reactionItem
при попытке создать экземпляр объекта.Создание экземпляра структуры с невыдвинутыми подструктурами в Go
Вот мой код:
m := &slack.ReactionAddedEvent{ Item: &slack.reactionItem{ File: &slack.File{ Preview: "Test", URLPrivate: "http://google.com", }, }, Reaction: "white_check_mark", }
Когда я удалить идентификатор &slack.reactionItem
из строки 2 в этом фрагменте кода, я получаю вместо ошибки: ./bot_test.go:112: missing type in composite literal
, очевидно.
Есть ли способ создать экземпляр объекта этого типа с параметрами, которые мне нужны?
Зачем вам этот пакет экспортировать ReactionAddedEvent на первом месте? – mpm
Это типизация неэкспортированной структуры, но похоже, что это экспортированный тип (с экспортированными полями), поэтому клиенты библиотеки могут реализовать обработчики для типов событий. Из их полей примеров: https://github.com/nlopes/slack/blob/master/examples/websocket/websocket.go – Kaedys
Идея, однако, состоит в том, что события создаются _created_ библиотекой slack из событий, которые полученные в виде сообщений JSON, а затем преобразовываются в эти экспортированные типы событий, для которых клиент может настроить обработчик. Клиент не должен сам создавать события. – Kaedys