Don't copy structs manually I don't know what I was thinking before. Go structs are values so assigning them makes a copy.
Persistent data structures for Go. See the full package documentation
Install with
go get github.com/mndrix/ps