Pratique — Pacotes e módulos
Revisão rápida
- Qual é a diferença entre
package main e um pacote reutilizável?
- Como Go decide se um nome é exportado por um pacote?
- Por que a convenção é o nome do pacote bater com o nome do diretório?
- Para que serve
go mod init?
- Que informações básicas aparecem em um
go.mod?
- Para que serve o
go.sum?
Dependências e ferramentas
- Quando usar
go get?
- Quando usar
go install pacote@versao?
- Por que instalar uma CLI com
go get não é mais o caminho preferido?
- O que
go mod tidy faz?
- Quando
go mod download pode ser útil?
Leia a estrutura
contact-book/
├── go.mod
├── main.go
├── model/
│ └── contact.go
└── contactbook/
└── store.go
- Que pacote você espera encontrar em
main.go?
- Que pacote você espera encontrar em
contactbook/store.go?
- Como
main.go poderia importar model e contactbook se o módulo fosse github.com/biancarosa/contact-book?
- O que acontece se uma função em
contactbook começar com letra minúscula e você tentar chamá-la de main?
Pensando na agenda
- Que código deveria ficar no pacote
model?
- Que código deveria ficar no pacote
contactbook?
- Que código deveria continuar no
main?
- Por que o store final usa
map[uuid.UUID]model.Contact?
- Por que
github.com/google/uuid é uma dependência do projeto e não uma ferramenta instalada com go install?