【发布时间】:2020-08-05 08:25:49
【问题描述】:
我正在尝试实现一个需要函数回调的类型,并且被变量初始化卡住了。类型 Terminal.New() 需要具有 SetPacketFunc 回调的类型 Repeater。这是在 Terminal.New 中定义的:
//Package dmr
type Repeater interface {
Active() bool
Close() error
ListenAndServe() error
Send(*Packet) error
GetPacketFunc() PacketFunc
SetPacketFunc(PacketFunc)
}
//Package terminal
func New(id uint32, call string, r dmr.Repeater) *Terminal {
t := &Terminal{
ID: id,
Call: call,
Repeater: r,
slot: []*Slot{NewSlot(), NewSlot(), NewSlot()},
accept: map[uint32]bool{id: true},
}
r.SetPacketFunc(t.handlePacket)
return t
}
在我的代码中,我正在初始化一个空的中继器类型变量:
var r dmr.Repeater 然后将其作为参数传递给t := terminal.New(123,"test",r)。但是在运行时,我在代码中的terminal.New 行得到了panic: runtime error: invalid memory address or nil pointer dereference。
如果Repeater的所有成员都是函数,我该如何正确定义它?
【问题讨论】:
标签: go