Pacotes e Importações
Parte da seção Programação Orientada a Objetos do Journey de GO da Coddy — lição 3 de 107.
Todo arquivo Go começa com uma declaração package. A palavra-chave import traz pacotes da biblioteca padrão do Go para que você possa usar suas funções.
Importar um único pacote
import "fmt"Importe múltiplos pacotes usando um bloco de importação
import (
"fmt"
"math"
"strings"
)Use funções de pacotes importados com o nome do pacote como prefixo
package main
import (
"fmt"
"strings"
"math"
)
func main() {
upper := strings.ToUpper("hello")
fmt.Println(upper) // Output: HELLO
root := math.Sqrt(16)
fmt.Println(root) // Output: 4
}Pacotes comuns da biblioteca padrão
"fmt" // E/S formatada (Print, Scan, Sprintf)
"strings" // Manipulação de strings (ToUpper, Contains, Replace)
"math" // Funções matemáticas (Sqrt, Pow, Pi)
"strconv" // Conversões de string (Itoa, Atoi)Você acessa funções de um pacote usando packagename.FunctionName. O Go permite apenas que você importe pacotes que você realmente usa — importações não utilizadas causam um erro de compilação.
Desafio
MédioCorrija a instrução de importação em utils.go para que as funções funcionem corretamente. Você precisa importar os pacotes strings e math:
FormatTextusastrings.ToUpperContainsWordusastrings.ContainsSquareRootusamath.Sqrt
Folha de consulta
Todo arquivo Go começa com uma declaração package. Use a palavra-chave import para trazer pacotes da biblioteca padrão do Go.
Importar um único pacote:
import "fmt"Importar múltiplos pacotes usando um bloco de importação:
import (
"fmt"
"math"
"strings"
)Acesse funções de pacotes importados usando packagename.FunctionName:
package main
import (
"fmt"
"strings"
"math"
)
func main() {
upper := strings.ToUpper("hello")
fmt.Println(upper) // Output: HELLO
root := math.Sqrt(16)
fmt.Println(root) // Output: 4
}Pacotes comuns da biblioteca padrão:
"fmt" // E/S formatada (Print, Scan, Sprintf)
"strings" // Manipulação de strings (ToUpper, Contains, Replace)
"math" // Funções matemáticas (Sqrt, Pow, Pi)
"strconv" // Conversões de string (Itoa, Atoi)Nota: O Go permite apenas que você importe pacotes que você realmente usa — importações não utilizadas causam um erro de compilação.
Experimente você mesmo
package main
import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
)
func main() {
scanner := bufio.NewScanner(os.Stdin)
scanner.Scan()
line := scanner.Text()
parts := strings.Fields(line)
numStr := parts[len(parts)-1]
text := strings.Join(parts[:len(parts)-1], " ")
num, _ := strconv.ParseFloat(numStr, 64)
fmt.Printf("Upper: %s\n", FormatText(text))
fmt.Printf("Contains 'world': %t\n", ContainsWord(text, "world"))
fmt.Printf("Sqrt: %.2f\n", SquareRoot(num))
}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 ExternosGo Workspace e MódulosPacotes e ImportaçõesNomes Exportados vs Não ExportadosIntrodução a OOP em GoStructs como ClassesDefinindo Métodos em StructsRecebedores de Ponteiro vs ValorInicialização de StructsFunções ConstrutorasRecapitulação - Calculadora Simples4Interfaces
Introdução a InterfacesImplementação ImplícitaInterface como ContratoInterface Vazia (any)Type AssertionType SwitchComposição de InterfacesInterfaces Stringer & ErrorRecapitulação - Calculadora de Formas7Encapsulamento
Campos Exportados vs Não ExportadosEncapsulamento em Nível de PacoteMétodos Getter e SetterOcultação de Informação em GoRecapitulação - Registros de Estudantes10Generics (Go 1.18+)
Introdução a GenericsParâmetros de TipoRestrições de TipoStructs GenéricasSolução Alternativa para Métodos GenéricosRecapitulação - Coleção Genérica2Mergulho Profundo em Tipos e Structs
Tipos Básicos e CompostosDefinições de Tipos PersonalizadosStruct TagsStructs AnônimasStructs AninhadasZero Values e PadrõesRecapitulação - Agenda de Contatos5Composição em vez de Herança
Por que Go não possui HerançaFundamentos de Incorporação de StructsPromoção de MétodosIncorporando Múltiplas StructsIncorporação vs AgregaçãoShadowing de Métodos IncorporadosRecapitulação - Hierarquia de Funcionários8Tratamento de Erros e OOP
A Interface errorTipos de Erro PersonalizadosError Wrapping (fmt.Errorf)Erros Sentinelaerrors.Is() e errors.As()Panic, Defer e RecoverRecapitulação - File Parser3Ponteiros e Memória
Fundamentos de Ponteiros em GoPonteiros para StructsPassagem por Valor vs ReferênciaA Função new()Garbage Collection em GoRecapitulação - Construtor de Lista Encadeada6Polimorfismo em Go
Polimorfismo via InterfacesDuck Typing em GoRegras de Satisfação de InterfaceColeções PolimórficasInjeção de DependênciaRecapitulação - Processador de Pagamentos9Concorrência e OOP
Fundamentos de GoroutinesCanais e ComunicaçãoCanais com Buffer vs. Sem BufferInstrução Selectsync.Mutex e sync.RWMutexsync.WaitGroupDesign de Structs Thread-SafeRecapitulação - Worker Pool