Diferenciais ● Orientação a Objetos sem herança ● Sem exceções ● Imports e variáveis não usadas causam erro de compilação ● Sem method overloading ou parâmetros opcionais ● Visibilidade é definida pela primeira letra ● Interfaces sem declaração (duck typing)
Duck typing Em linguagens dinâmicas como Python existem o conceito de Duck Typing. "if it looks like a duck and quacks like a duck, it’s a duck." class Duck: def quack(self): print("quack") class Cow: def quack(self): print("muu") def say_quack(quacker) quacker.quack() say_quack(Duck()) say_quack(Cow())
Goroutines ● Função que executa concorrentemente ● São basicamente threads ● Basta adicionar a keyword go na chamada do método ● Muito similar ao comando & do shell, executa e termina silenciosamente
Channels ● São pipes que conectam goroutines ● Simples para trocar mensagens entre goroutines ● Unbuffered e síncrono por padrão ● O sender fica bloqueado até o receiver receber o valor ● Buffered channels bloqueiam apenas se o buffer ficar cheio