我正在阅读“The Go Programming Language”一书,并在第 5 章中遇到了一个不寻常的 for 循环语法。我已经删减了下面的示例,但整个程序都在本书的 GitHub 页面上。
type Node struct {
int NodeType
FirstChild, NextSibling *Node
}
func visit(n *Node) {
for c:= n.FirstChild; c != nil; c = c.NextSibling {
visit(c)
}
}
我脑海中的 C 解析器告诉我,它c.NextSibling
总是指向 aNode
或 be nil
。在那种情况下,循环要么总是中断,要么永远继续。
当c.NextSibling
不是时nil
,似乎循环正在退出,因为循环值与上一次迭代相同,但我在 Go语言规范中找不到任何东西来支持它。
我已经编译了那个程序并确认它按照书上的那样工作。
我错过了一些基本的东西还是这里发生了其他事情?
人到中年有点甜
相关分类