Olá @isaqueveras, muito legal essa explicação.
Assim como o Filipe Deschamps, fiquei em dúvida a respeito do package e do import.
Apenas fazendo referência ao C# e o PHP, o package funcionaria de modo similar aos namespaces correto?
Olá @isaqueveras, muito legal essa explicação.
Assim como o Filipe Deschamps, fiquei em dúvida a respeito do package e do import.
Apenas fazendo referência ao C# e o PHP, o package funcionaria de modo similar aos namespaces correto?
Olá OtavioVB, tudo bem?
Complementando ao isaqueveras, um package em Golang é usado para indicar onde as funcionalidades similares estão. É como se fosse uma biblioteca e em todos os livros estivessem escrito o nome da biblioteca ao qual estes livros fazem parte.
Por exemplo: Estou na biblioteca X e meu livro Go Horse tem em seu prefácio escrito que faz parte da biblioteca X.
A diferença entre Golang, C#, PHP e Java é que Golang unifica nos packages funcionalidades que não são classes (já que em Go não tem classes, mas algo próximo a isso como structs), ou seja, são métodos, funções que se fazem parte do contexto que o pacote se propõe a resolver.
Como descrito na referência em GeekForGeeks:
Para entender um pouco melhor, trago também exemplo de packages em Java conforme a W3Schools:
E sobre namespaces, de acordo com a Microsoft:
O .NET usa namespaces para organizar suas muitas classes...
A Microsoft também traz uma visão geral sobre os namespaces:
Referências:
Victor, muito bom complemento! Então no caso do Go, os packages são Singletons? Eles guardam estado? Ou não guardan de jeito algum? Eles podem ser usados com o pattern de Factory?
Estou super curioso com isso, pois está parecendo muito como foram implementados os Models aqui no TabNews. Todos são Singletons pela natureza do Node.js tratar eles assim por padrão, mas nenhum guarda estado, são somente um agrupamento de funções.
Olá @OtavioVB eu não conheço a linguagem C#, mas vou explicar novamente a diferencia. O package é utilizado para declarar um pacote, o import serve pra importar esses pacotes.