为了账号安全,请及时绑定邮箱和手机立即绑定

尝试在 Go 中测试空的自引用结构值

尝试在 Go 中测试空的自引用结构值

Go
翻阅古今 2021-12-20 15:16:24
我是 Go 的新手,正在尝试实现一个非常简单的链表。目前,在递归遍历列表时,如果 node.next 为 nil/unset,我试图跳出 for 循环,但 if 条件永远不会满足。我只能假设该值不是 nil,而是某种指向空 Node 结构类型的指针,但我不知道如何评估它。这是我的代码,任何帮助将不胜感激:package mainimport "fmt"type Node struct {    data string    next *Node}func PrintList(node *Node) {  for {    fmt.Println(node.data)    if node.data == nil {      break    } else {      PrintList(node.next)    }  }}func main() {  node3 := &Node{data: "three"}  node2 := &Node{data: "two", next: node3}  node1 := &Node{data: "one", next: node2}  PrintList(node1)}
查看完整描述

1 回答

?
翻翻过去那场雪

TA贡献2065条经验 获得超13个赞

修正你的错字:node.next == nilnot node.data == nil。并修复您的递归错误:删除for循环。更好的是,为了安全,请检查node == nil. 例如,


package main


import "fmt"


type Node struct {

    data string

    next *Node

}


func PrintList(node *Node) {

    if node == nil {

        return

    }

    fmt.Println(node.data)

    PrintList(node.next)

}


func main() {

    node3 := &Node{data: "three"}

    node2 := &Node{data: "two", next: node3}

    node1 := &Node{data: "one", next: node2}

    PrintList(node1)

}

输出:


one

two

three


查看完整回答
反对 回复 2021-12-20
  • 1 回答
  • 0 关注
  • 119 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信