This article will explain what are synchronizations and list the synchronization techniques supported by Go.
We can also do synchronizations by making use of network and file IO. But such techniques are very inefficient within a single program process. Generally, they are used for inter-process and distributed synchronizations. Go 101 will not cover such techniques.
To understand these synchronization techniques better, it is recommended to know the memory order guarantees in Go.
The data synchronization techniques in Go will not prevent programmers from writing improper concurrent code. However these techniques can help programmers write correct concurrent code easily. And the unique channel related features make concurrent programming flexible and enjoyable.