горутины - это другая модель исполнения. нужно думать по-разному когда пишешь go против nim/c/c++/c#/js/typescript/java/etc. на уровне горутины любое ИО такое же "блокирующее/синхронное", как и любая другая ф-ция. в более классических можелях выполнения такая роскошь недопустима. но хорошая новость в том, что го рантайм (шедюлер, гц, горутины, каналы, и тд) можно прикрутить к ниму, и другим языкам наверное тоже при желании.