在GOLANG中,有没有一种简单的方法可以将结构体进行类型转换,以便在通道上实现多态行为?我正在尝试通过一个通道发送不同版本的结构体,例如我将拥有不同类型的事件,比如LoginEvent。每个事件在结构体中都会拥有不同数量的数据。
package main
import "fmt"
type Event struct {
EvtType EvtType
Username string
Data string
}
type LoginEvent struct {
Event
CallBackChannel chan *Event
}
type EvtType int
const (
Login EvtType = iota+1
Logout
ChatMessage
Presense
BuddyList
)
func main() {
fakeOutputChan := make(chan<- *Event)
ourSrvChannel := make(chan *Event)
lg := (LoginEvent{Event{Login,"",""} ,ourSrvChannel})
fakeOutputChan <- (*Event)(&lg)
fmt.Println("Hello, playground")
}