Eu escrevi um pequeno mecanismo no Go for OSX (usando o OpenGl para a janela de gráficos). Tenho alguma experiência com os mecanismos de jogos C ++ ( http://morganjeff.weebly.com/ ) e decidi experimentar o Go depois de ler sobre alguns dos recursos que ele oferece.
Desde o lançamento do Go 1.1, o go tem suporte para a maioria dos recursos necessários para escrever um mecanismo de jogo (realmente um núcleo de jogo, pois o mecanismo sugere editores e o que não), incluindo:
- Associação de função de membro (para o sistema de mensagens)
- A reflexão é incorporada (útil para serialização, suporte a ferramentas externas, etc.)
- Interfaces (para implementar comportamento polimórfico para sistemas, componentes, etc.)
Alguns dos benefícios de usar o Go (para um projeto grande):
- O teste é incorporado ao idioma (isso inclui testes de benchmark e algumas asserções)
- É fácil adicionar exemplos ao idioma (e eles são compilados para correção)
- É fácil adicionar código específico à arquitetura (por meio de convenções de nomenclatura de arquivos)
- A criação de perfil é incorporada ao idioma
- controle de versão interno das importações (permite adicionar binários grandes a um repositório separado da fonte, mantendo-o com versão e atualizado)
Alguns benefícios do uso do Go em geral:
- Código fácil de refatorar
- O Go suporta encadeamento (ao contrário do C ++, que foi colocado em camadas no topo)
- velocidade de compilação super rápida reduz a necessidade de suporte à linguagem de script
- sistema de digitação estática (as interfaces são satisfeitas por meio da digitação de pato, aka implicitamente)
- vários valores de retorno, parâmetros nomeados, atributos de estrutura marcados
- ótimas ferramentas e documentação incorporadas
- idioma gerenciado
Algumas desvantagens do uso do Go:
- Sem macros ou modelos
- Não possui suporte de biblioteca para idiomas mais maduros
- idioma gerenciado (listado duas vezes de propósito)
- NO IDE
Existem maneiras de obter memória bruta em movimento (importação "insegura") e irei vincular um artigo que mostra como um programa em movimento pode ser perfilado para memória e velocidade. Em suma, a afirmação de Go de que é um C moderno parece muito verdadeira. Eu acho que ele foi "inteligentemente" projetado (por muito mais razões do que eu mencionei) e, mais importante, está bem documentado. Um mecanismo projetado no Go será um pouco diferente de um mecanismo projetado em C ++ (algo com o qual ainda estou me acostumando), mas o mecanismo Go resolve muitos problemas que não são realmente resolvidos no C ++ (paralelismo, a complexidade da linguagem C ++ e o mau uso da herança).
Aqui está o artigo que prometi:
http://blog.golang.org/2011/06/profiling-go-programs.html
-Jeff