网络上的Golang数组和地图同步

I have a need to synchronize an internal state of 2 programs(client && server) over the persistent network connection.

The first idea was to implement a custom protocol for this, is there any alternatives you can think of? Any libraries that could help in the process?

Internal state consists of a lot of maps and slices, when some structure inside slice/map changes it would be okay to pass it as a whole

package encoding/gob maybe helpful if only for golang