package main import ( "fmt" ) func main() { MyGraph := DirectedGraph{} // Instantiate Nodes FirstNode := Node{Data: City{Name: "Amsterdam", Population: 821_752}} SecondNode := Node{Data: City{Name: "Dublin", Population: 544_107}} thirdNode := Node{Data: City{Name: "Berlin", Population: 3_645_000}} fourthNode := Node{Data: City{Name: "Paris", Population: 2_161_000}} // Setup relations FirstNode.Edges[0] = Edge{To: &thirdNode} SecondNode.Edges[0] = Edge{To: &thirdNode} FirstNode.Edges[1] = Edge{To: &SecondNode} thirdNode.Edges[0] = Edge{To: &fourthNode} // Add Nodes to graph MyGraph.AddNode(&FirstNode) MyGraph.AddNode(&SecondNode) MyGraph.AddNode(&thirdNode) MyGraph.AddNode(&fourthNode) fmt.Println("Whats inside the graph") for index, node := range MyGraph.nodes { if (node == Node{}) { continue } fmt.Printf("%d %s\t(Pops: %d)\n", index, node.Data.Name, node.Data.Population) for _, edge := range node.Edges { if (edge == Edge{}) { continue } fmt.Printf( "\t- Has a connection to %s\t(Travel Cost: %d)\n", edge.To.Data.Name, edge.Cost()) } fmt.Println() } }