我正在尝试手动创建一个类型为ReactionAddedEvent的实例,并给出here, in nlopes' Go Slack library。但是,子类型reactionItem是未导出的,导致我在尝试实例化对象时收到错误./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", }
当我在那个片段,从第2行中删除标识&slack.reactionItem
,我得到的,而不是错误:./bot_test.go:112: missing type in composite literal
,效果显着。
有什么办法让我用我需要的参数实例化这种类型的对象吗?
为什么该软件包会首先导出ReactionAddedEvent? – mpm
它是未导出结构的typedef,但它看起来像导出类型(带有导出字段),因此库的客户端可以为事件类型实现处理程序。从他们的示例字段:https://github.com/nlopes/slack/blob/master/examples/websocket/websocket.go – Kaedys
然而,这个想法似乎是事件是由松散库创建_create_事件作为JSON消息接收,然后转换为客户端可以为其设置处理程序的这些导出类型事件。客户不应该自己创建事件。 – Kaedys