Solving the travelling salesman problem using a genetic algorithm
How about using a slice for Gene.Data?

You just allocate

var allData := make([]int, nCrossover * ts.geneLength)


before entering the for loop and assign

newGenes[i].Data = allData[i * ts.geneLength: (i + 1) * ts.geneLength]


You'd cut down on the amount of allocations (and system calls) without changing much else (except findNextCity and isInArray - but they should be written to accept slices instead of array pointers anyway).

And you'd follow the advice given by the languages creators in Effective Go.