Executando verificação de segurança...
2

Bom. eu a utilizo a quase 4 anos apenas no linux. Para web não existe linguagem melhor que C#, pelo menos enquanto Go não largar mão de certos preciosismos (minha opinião aqui). E em geral os serviços web vão rodar em servers Linux.

Para desktop você tem soluções razoáveis como o Maui ou o Avalonia. Particularmente o segundo seria minha primeira escolha ao desenvolver desktop apps para qualquer plataforma, até windows.

Dito tudo isso. Diria que o critério de escolha geralmente recai sobre o que deseja fazer e como destribuir. C# requer um runtime que não é comum a ambientes linux. E mesmo compilada para código de máquina os binários são gigantes (mal de Enterprise). Então, Cli's: a memos que feitas como cmdlets PowerShell (que também funciona no linux e eu utilizando diariamente) esqueça. Desktop apps: é aceitável que sejam grandes. ou necessitem de um runtime especial em certos casos. E por fim, servers: apenas sim.

Carregando publicação patrocinada...
1
2

Bom. Go por muito tempo rejeitou ideias como generics, programação funcional, entre outras coisas. Eles vem abandonando esse tipo de posição com o tempo. Porem ainda há coisas que me frustram.

Vou dar alguns exemplos em um projeto recente. Tenho tentado criar um template Para web, utilizando o que acho util das famosas "boas práticas" (clean code, ddd, solid...) e algumas coisas dificultam ou impossibilitam algumas abordagens.

Por exemplo: o fato das interfaces se auto implementarem nas estruturas dificulta um pouco durante a segregação de interfacies em frameworks de injeção de dependência como o Fx. Alem disso a falta de parâmetros genéricos especificamente em metodos (não estão disponíveis apenas nos métodos na versão atual) impossibilitada a criação de um pattern de pipeline. Que deixaria o código infinitamente mais limpo.

Essas e outras coisas fazem de Go uma linguagem frustrante as vezes. A implementação é perfeita, compilador simples, rápido, compila binários estáticos. Alguns toques a mais como melhor suporte a genéricos, um operador de auto retorno de erros como o "?" de Rust. Faria de Go a linguagem perfeita para a web.