Arquivos Externos
Parte da seção Programação Orientada a Objetos do Journey de GO da Coddy. Lição 1 de 107.
Em Go, você pode dividir seu código em vários arquivos .go dentro do mesmo pacote. Todos os arquivos que compartilham a mesma declaração package podem acessar diretamente as funções e os tipos uns dos outros: não é necessário importar.
// helper.go
package main
func Add(a, b int) int {
return a + b
}Use a função em outro arquivo do mesmo pacote
// main.go
package main
import "fmt"
func main() {
result := Add(3, 5)
fmt.Println(result) // Saída: 8
}Ambos os arquivos declaram package main, portanto Add está disponível em main.go sem qualquer importação. Isso permite organizar o código em arquivos lógicos, mantendo-os no mesmo pacote.
Desafio
FácilCrie duas funções em helper.go que são usadas por main.go:
Add: recebe dois parâmetrosinte retorna a soma delesSubtract: recebe dois parâmetrosinte retorna a diferença entre eles
Experimente você mesmo
package main
import "fmt"
func main() {
var a, b int
fmt.Scan(&a, &b)
fmt.Printf("Sum: %d\n", Add(a, b))
fmt.Printf("Difference: %d\n", Subtract(a, b))
}Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Programação Orientada a Objetos
1Fundamentos de OOP em Go
Arquivos ExternosWorkspace e Módulos do GoPacotes e ImportsNomes Exportados vs. Não ExportadosIntrodução à OOP em GoStructs como ClassesDefinindo Métodos em StructsReceptores de Ponteiro vs. de ValorInicialização de StructsFunções ConstrutorasRecapitulação — Calculadora Simples4Interfaces
Introdução às InterfacesImplementação ImplícitaInterface como ContratoInterface Vazia (any)Asserção de TipoSwitch de TipoComposição de InterfacesInterfaces Stringer e ErrorRecapitulação - Calculadora de Formas7Encapsulamento
Campos Exportados vs. Não ExportadosEncapsulamento no Nível de PacoteMétodos Getters e SettersOcultação de Informações em GoRecapitulação - Registros de Alunos10Genéricos (Go 1.18+)
Introdução aos genéricosParâmetros de tipoRestrições de tipoStructs genéricasAlternativa para métodos genéricosRecapitulação - Coleção genérica13Padrões de Projeto — Parte 1
Introdução aos Padrões de ProjetoPadrão SingletonPadrão FactoryPadrão Abstract FactoryPadrão ObserverPadrão Strategy2Tipos e Structs em Profundidade
Tipos Básicos e CompostosDefinições de Tipos PersonalizadosTags de StructStructs AnônimasStructs AninhadasValores Zero e PadrõesRecapitulação - Livro de Contatos5Composição em vez de herança
Por que Go não tem herançaNoções básicas de incorporação de structsPromoção de métodosIncorporação de várias structsIncorporação vs agregaçãoOcultação de métodos incorporadosRecapitulação - Hierarquia de funcionários8Tratamento de Erros e OOP
A interface errorTipos de Erro PersonalizadosEncapsulamento de Erros (fmt.Errorf)Erros Sentinelaerrors.Is() e errors.As()Panic, Defer e RecoverRecapitulação - Analisador de Arquivos3Ponteiros e Memória
Fundamentos de Ponteiros em GoPonteiros para StructsPassagem por Valor vs. ReferênciaA Função new()Coleta de Lixo em GoRecapitulação - Construtor de Lista Ligada6Polimorfismo em Go
Polimorfismo via InterfacesDuck Typing em GoRegras de Satisfação de InterfacesColeções PolimórficasInjeção de DependênciasRecapitulação - Processador de Pagamentos9Concorrência e OOP
Fundamentos de GoroutinesCanais e comunicaçãoCanais com e sem bufferInstrução selectsync.Mutex e sync.RWMutexsync.WaitGroupDesign de structs thread-safeRevisão - Worker PoolPratique por conta própria: Compilador de Go online