Demystifying Synchronous and Asynchronous Programming in Golang: Understanding the Differences and Benefits