Concurrency in Go: Race Conditions and their Solutions