【发布时间】:2015-07-21 15:18:33
【问题描述】:
在以下代码段中,尝试将 nil 接口转换为某事物的指针失败,并出现以下错误:interface conversion: interface is nil, not *main.Node
type Nexter interface {
Next() Nexter
}
type Node struct {
next Nexter
}
func (n *Node) Next() Nexter {...}
func main() {
var p Nexter
var n *Node
fmt.Println(n == nil) // will print true
n = p.(*Node) // will fail
}
在此处播放链接:https://play.golang.org/p/2cgyfUStCI
为什么这完全失败了?完全可以做到
n = (*Node)(nil)
,所以我想知道如何从 nil 接口开始实现类似的效果。
【问题讨论】: