我拿起Golang,在遍历链表时遇到了问题。我打算做的是访问链表的所有节点,并从每个节点调用一个接口方法。
我已经定义了一个接口
type Sortable interface {
CompareTo(t Sortable) int
}我定义了一个节点类型和一个链表
type node struct {
pNext *node
value int
}
type LinkedList struct {
PHead, PNode *node
}
func (n node) CompreTo(t Sortable) int{
other := t.(node)
if n.value == other.value {
return 0
} else if n.value > other.value {
return 1
} else {
return -1
}
}当我在遍历链表时进行比较时,出现了这个问题:......
PNode.CompareTo(PNode.pNext)我得到: panic:接口转换: Sortable is * node,not node
猜想这是因为PNode和PNode.pNext是指向节点结构的指针,而不是节点对象?那么我应该如何强制转换指针以使其正确呢?我以前是用C++写的,所以也许我的策略在Golang的世界里出了问题?
任何建议都是非常感谢的!
发布于 2018-02-09 13:49:52
您必须断言指向指针节点的Sortable t。
func (n node) CompreTo(t Sortable) int{
other := t.(*node)
if n.value == other.value {
return 0
} else if n.value > other.value {
return 1
} else {
return -1
}
}https://stackoverflow.com/questions/48699310
复制相似问题