No exercício, a variável clientes está dentro da função GetClientes, isso não necessariamente obriga a importação do pacote para uso da estrutura certo?
A não ser que esteja fora, ou em códigos diferentes?
No exercício, a variável clientes está dentro da função GetClientes, isso não necessariamente obriga a importação do pacote para uso da estrutura certo?
A não ser que esteja fora, ou em códigos diferentes?
Oii, Diego! Tudo bem?
Sua observação faz muito sentido. No exemplo específico desse código, a estrutura (struct) está sendo definida de forma inline (dentro da função), o que realmente dispensa a necessidade de importar um pacote externo para acessá-la.
Vou detalhar os pontos que explicam por que a alternativa foi considerada a correta e quando a importação seria exigida:
No código apresentado, a definição acontece no momento da criação da variável:
var clientes = []struct {
ID int
Nome string
}{ ... }
Como essa estrutura é anônima e local, o compilador do Go não precisa de referências externas. Se o objetivo do exercício fosse apenas fazer o código rodar como está, ele funcionaria sem importações adicionais.
Geralmente, em exercícios de cursos de API Rest com Go, o foco é na organização do projeto e nas boas práticas de arquitetura. É comum que:
Cliente sejam usadas em vários lugares (no banco de dados, em diferentes controllers, em testes).inline) limita o uso dela apenas àquele escopo. Se você precisasse criar um novo cliente em outra rota, teria que repetir a definição, o que gera duplicidade de código.Portanto, a alternativa "B" foca na correção estrutural do projeto: levar a definição para um pacote (como models ou entities) e importá-la para manter o código limpo e escalável.
Você acertou na sua lógica: a importação só se torna uma regra de sintaxe se:
package models).Se olharmos apenas para a sintaxe pura, o código funciona com a struct inline. Porém, na perspectiva de desenvolvimento de APIs reais, o "erro" apontado pelo exercício refere-se à falta de uma estrutura definida globalmente que permita a tipagem correta e a organização entre pacotes.