gpt4 book ai didi

Golang结构体指针调用接口(interface)方法

转载 作者:数据小太阳 更新时间:2023-10-29 03:12:08 27 4
gpt4 key购买 nike

我正在学习 Golang,但在遍历链表时遇到了问题。我打算做的是访问链表的所有节点,并从每个节点调用一个接口(interface)方法。

我已经定义了一个接口(interface)

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 :接口(interface)转换:Sortable 是 *node,不是 node

猜猜这是因为 PNode 和 PNode.pNext 是指向节点结构的指针,而不是节点对象?那我应该怎么投指针才对呢?我以前用 C++ 编写,所以也许我的策略在 Golang 世界中出错了?

感谢任何建议!

最佳答案

您必须将 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
}
}

关于Golang结构体指针调用接口(interface)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48699310/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com