Il trasferimento di messaggi tra contesti di esecuzione leggeri, insieme alla possibilità di creare e distruggere questi contesti in modo dinamico, è fondamentalmente il modello di attore .
I linguaggi di programmazione tendono ad avvicinarsi al problema di espressione in due modi: le lingue OO tendono a concentrarsi sul renderlo è più facile implementare le stesse operazioni utilizzando diversi tipi di dati (ad esempio "oggetto che posso cliccare con un mouse" potrebbe essere una barra di scorrimento, una finestra, un menu, una casella di testo, ecc. - stessa operazione, diverse rappresentazioni di dati), mentre le lingue funzionali tendono a focalizzarsi facilmente sull'implementazione di nuove operazioni con gli stessi tipi di dati sottostanti. Abbandonando le gerarchie di classi, Go sembra finire più sul lato "funzionale" di questa divisione.
Come Adam Crossland ha indicato nel suo commento, "type-ignorantly-implementation-interface" può essere considerato una forma di digitazione anatra, che è molto diffusa nei linguaggi dinamici. (È tecnicamente più corretto, comunque, considerare questo come un sistema di tipo strutturale all'interno di Go. I modelli C ++ sono probabilmente i più popolari implementazione di un sistema di tipo strutturale oggi.)
Go ha molti antecedenti: non credo che nessuna delle sue idee sia originale per la lingua. Ma penso che sia generalmente la misura sbagliata per un linguaggio destinato a essere pratico. Go sembra che unisca idee utili provenienti da diversi domini diversi in un modo elegante, che (penso) risulterebbe in una programmazione più produttiva di C # o Java potrebbe produrre. Spero che guadagni trazione.