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

我是 Go 的新手,正在尝试实现一个非常简单的链表。目前,在递归遍历列表时,如果 node.next 为 nil/unset,我试图跳出 for 循环,但 if 条件永远不会满足。我只能假设该值不是 nil,而是某种指向空 Node 结构类型的指针,但我不知道如何评估它。这是我的代码,任何帮助将不胜感激:


package main


import "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)

}


翻阅古今
浏览 120回答 1
1回答

翻翻过去那场雪

修正你的错字:node.next == nilnot node.data == nil。并修复您的递归错误:删除for循环。更好的是,为了安全,请检查node == nil. 例如,package mainimport "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)}输出:onetwothree
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go