golang 遍历树状结构
以遍历Block结构为例,Block结构如下:
type Block struct { Inside bool Nest int Boundary bool Incise []*Block }
可以看到Block中包含一个[]*Block类型的属性,在Block中,若Inside为true则说明Incise不为空。我们的目的是遍历一个[]Block数组,若其Incise有值则继续向下遍历。
遍历代码如下:
func TraversingCubes(cubes []*blockCut.Block) {for _,cube:= range cubes{ if cube.Inside==true { fmt.printf(cube) }else { cubes = cube.Incise TraversingCubes(cubes) } } return }