// ControllableIterateAllNodes for/range on all nodes of the graph,
// call IterateAction for each iterated node.
// break the loop immdiately if action return `BreakIterate`
ControllableIterateAllNodes for/range on all nodes of the graph,
call IterateAction for each iterated node.
break the loop immdiately if action return `BreakIterate`
// ControllableIterateAllNodes for / range on all nodes of the graph // call IterateAction for each iterated node . // break the loop immdiately if action return ` BreakIterate `
func (g adjacencyMatrixGraph) ControllableIterateAllNodes(action IterateActionWithControl) {
	for i := range g.adjMatrix {
		condition := action(NodeID(i))
		if condition == BreakIterate {
			break
		}
	}
}
func ( g adjacencyMatrixGraph ) ControllableIterateAllNodes ( action IterateActionWithControl ) { for i := range g . adjMatrix { condition := action ( NodeID ( i ) ) if condition == BreakIterate { break } } }
ControllableIterateAllNodes for/range on all nodes of the graph,
call IterateAction for each iterated node.
ControllableIterateAllNodes for / range on all nodes of the graph call IterateAction for each iterated node .