| // Copyright 2013 The Go Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style | |
| // license that can be found in the LICENSE file. | |
| // +build OMIT | |
| package main | |
| import "fmt" | |
| func main() { | |
| // START OMIT | |
| type Node struct { | |
| Next *Node | |
| Value interface{} | |
| } | |
| var first *Node | |
| visited := make(map[*Node]bool) // HL | |
| for n := first; n != nil; n = n.Next { | |
| if visited[n] { // HL | |
| fmt.Println("cycle detected") | |
| break | |
| } | |
| visited[n] = true // HL | |
| fmt.Println(n.Value) | |
| } | |
| // END OMIT | |
| } |