data structures and algorithms in go