I've written a solution for http://tour.golang.org/concurrency/8, which asks for a Walk() function to traverse a randomly generated binary tree, and a Same() function to check if two trees have the same values.Is this solution is the most efficient? (I think that the Same function is not the most efficient solution, but I don't know how to make it better.)package mainimport code.google.com/p/go-tour/treeimport fmt// Walk walks the tree t sending all values// from the tree to the channel ch.func Walk(t *tree.Tree, ch chan int) {    if t == nil {        return    }    Walk(t.Left, ch)    ch <- t.Value    Walk(t.Right, ch)}// Same determines whether the trees// t1 and t2 contain the same values.func Same(t1, t2 *tree.Tree) bool {     c1 := make(chan int)    c2 := make(chan int)    go Walk(t1,c1)     go Walk(t2,c2)    for z:=0;z<10;z++ {        if <-c1 != <-c2 {            return false        }    }    return true}func main() {    ch := make(chan int)        go Walk(tree.New(1), ch)    for z:= 0; z<10; z++ {        fmt.Println(<-ch)    }    fmt.Println(Same(tree.New(1), tree.New(1)) == true)    fmt.Println(Same(tree.New(1), tree.New(2)) == false)}
Walking and comparing contents of binary trees
tree;concurrency;go