Sharing memory at the thread level is like two laptops sharing file using a NAS. With Go channel, it is like sharing a file using USB drive. Don’t sweat the locking stuff. Memory is cheap and so are goroutines. You can create and dispose of thousands of goroutines (like USB flash) and carry them around where computing is. Move data to computing, not computing to data.
Except for Joyent Manta that is.