Pular para conteúdo

Quiz 05 - Interfaces e Composição 🧩

1. Por que as interfaces em Go são chamadas de "Duck Typing" implícito?
Porque elas têm um desenho de pato no ícone
Porque você não precisa declarar que "implementa" uma interface; basta ter os métodos necessários
Porque elas só funcionam com nomes de animais
Porque são muito lentas para rodar
2. O que acontece se uma interface definir 3 métodos e uma struct implementar apenas 2?
O Go tenta adivinhar o terceiro
A struct NÃO implementa a interface (erro de tipo)
A struct implementa a interface parcialmente
O programa roda mas dá erro se chamar o método faltante
3. Qual a principal vantagem da Composição sobre a Herança em Go?
Deixa o código mais colorido
Evita hierarquias complexas e rígidas, promovendo o desacoplamento
Permite que o código rode mais rápido no Windows
Nenhuma, herança é sempre melhor
4. Para que serve a "Interface Vazia" `interface{}` (ou `any` nas versões mais novas)?
Para indicar que o programa não faz nada
Para representar um valor de qualquer tipo
Para deletar variáveis da memória
Para criar um loop que nunca termina
5. O que significa "Aceite Interfaces, Retorne Structs"?
É uma regra de etiqueta do Google
É uma boa prática que dá flexibilidade a quem chama a função e clareza no retorno
Significa que o código deve ser escrito apenas com interfaces
É um padrão para banco de dados
6. Como você faz o "Type Assertion" para descobrir o tipo real por trás de uma interface?
var x = interface.(tipo)
interface.as(tipo)
valor, ok := interface.(tipo)
check(interface == tipo)
7. Em Go, podemos anexar métodos a tipos básicos (como `int`)?
Não, apenas a structs
Sim, desde que você defina um novo tipo (ex: `type MeuInt int`)
Sim, basta usar a extensão .go
Somente se o computador for de 64 bits
8. Qual o limite de métodos que uma interface pode ter?
No máximo 10
Apenas 1
Não há limite técnico, mas interfaces pequenas (1 ou 2 métodos) são preferíveis
Elas devem ter sempre um número par de métodos
9. O que é "Embedding" (Embutimento) na Composição?
Colocar o computador dentro de uma caixa
Copiar e colar código de um arquivo no outro
Colocar uma struct dentro de outra sem dar um nome ao campo, herdando seus métodos
Salvar o código no banco de dados
10. Go suporta Polimorfismo?
Não, Go é funcional
Sim, através do uso de Interfaces
Somente se usar o pacote `poly`
Não, Go é procedural e não tem objetos