A passagem de mensagens entre contextos de execução leves, juntamente com a capacidade de criar e destruir dinamicamente esses contextos, é basicamente o modelo do ator .
As linguagens de programação tendem a abordar o problema da expressão de uma das duas maneiras: as linguagens OO tendem a se concentrar em facilitar a implementação das mesmas operações usando tipos de dados diferentes (por exemplo, "objeto em que posso clicar com o mouse" pode ser uma barra de rolagem, uma janela, um menu, uma caixa de texto etc. - mesma operação, diferentes representações de dados), enquanto as linguagens funcionais tendem a se concentrar na implementação fácil de novas operações nos mesmos tipos de dados subjacentes. Ao abandonar as hierarquias de classe, o Go parece acabar mais no lado "funcional" dessa divisão.
Como Adam Crossland indicou em seu comentário, "interface de implementação de tipo ignorante" pode ser considerada uma forma de digitação de pato, que é altamente prevalente em linguagens dinâmicas. (É mais tecnicamente correto, no entanto, considerar isso como um sistema de tipo estrutural nos modelos Go. C ++ são provavelmente a implementação mais popular de um sistema de tipo estrutural atualmente.)
Go tem muitos antecedentes - não acho que nenhuma de suas idéias seja original para o idioma. Mas acho que geralmente é a medida errada para uma linguagem que se pretende prática. Go parece que combina idéias úteis de vários domínios diferentes de uma maneira elegante, que (eu acho) resultaria em programação mais produtiva do que C # ou Java poderia produzir. Espero que ganhe força.