Data structures and algorithms in Go