github.com/serversong/goreporter@v0.0.0-20200325104552-3cfaf44fd178/linters/copycheck/job/buildtree.go (about) 1 package job 2 3 import ( 4 "github.com/360EntSecGroup-Skylar/goreporter/linters/copycheck/suffixtree" 5 "github.com/360EntSecGroup-Skylar/goreporter/linters/copycheck/syntax" 6 ) 7 8 func BuildTree(schan chan []*syntax.Node) (t *suffixtree.STree, d *[]*syntax.Node, done chan bool) { 9 t = suffixtree.New() 10 data := make([]*syntax.Node, 0, 100) 11 done = make(chan bool) 12 go func() { 13 for seq := range schan { 14 data = append(data, seq...) 15 for _, node := range seq { 16 t.Update(node) 17 } 18 } 19 done <- true 20 }() 21 return t, &data, done 22 }