A Linguagem de Programação Go

Aleksandr Shitik
Aleksandr Shitik

Escrevo meus próprios posts e livros, e faço resenhas de filmes e livros. Especialista em cosmologia e astronomia, TI, produtividade e planejamento.

A Linguagem de Programação Go
Alan A. A. Donovan, Brian W. Kernighan
Gêneros: Programação
Ano de publicação: 2016
Ano de leitura: 2020
Minha avaliação: Máxima
Número de leituras: 1
Total de páginas: 436
Resumo (páginas): 0
Idioma original da publicação: Inglês
Traduções para outros idiomas: Russo, Português, Chinês

Primeiro, analisarei brevemente a estrutura do livro por capítulos, depois escreverei a conclusão e listarei os prós e contras do livro.

Manual

Este é um capítulo introdutório sobre o uso da linguagem Go. Fala sobre a origem da linguagem, apresenta um exemplo de "hello world", discute execução e compilação, o conceito de módulos (pacotes), declaração de funções, formatação de código, trabalho com argumentos da linha de comando, declaração de variáveis e uma introdução ao "for". Também aborda a busca por strings repetidas de diferentes maneiras, trabalho com imagens e URLs e até a criação de um servidor web simples.

Estrutura do programa

São discutidas palavras reservadas, nomeação de variáveis, funções e constantes. Explica-se como declarar variáveis (usando var, const, type, func), o que pode ser omitido e como agrupar várias declarações. Pointers e a criação de variáveis com a função new são detalhadamente explorados. Também são abordados escopo e tempo de vida das variáveis, além da atribuição de valores. É mostrado o uso de pacotes externos, importação e encapsulamento de dados.

Tipos de dados fundamentais

São analisados números (inteiros e de ponto flutuante), operadores binários e bit a bit e sua precedência, comparação de números. Explica-se o uso de números complexos em Go, valores booleanos. Strings, sequências de controle e literais de string são discutidos, bem como runas para lidar com caracteres Unicode. Conversões entre strings e números também são abordadas. Constantes e pseudo-enums também são explicados.

Tipos de dados compostos

Aqui trata-se de tipos de dados mais complexos: arrays (sequências de tamanho fixo), slices (sequências dinâmicas), maps (coleções de pares chave-valor) e structs. Criação, inicialização, comparação e funções básicas para arrays e slices são explicadas. Vários exemplos de uso de maps são fornecidos. Structs são detalhadamente abordados, incluindo trabalho com JSON e uso das funções Marshal e Unmarshal. Por fim, um exemplo de trabalho com HTML usando Go.

Funções

Uma seção bastante completa sobre funções. Começa com teoria, depois um exemplo de processamento recursivo de HTML. Aborda o retorno de múltiplos valores e um dos conceitos-chave da linguagem — verificação de erros com if err != nil. Funções anônimas e funções variádicas (que recebem número variável de parâmetros) também são bem explicadas.

Métodos

Como Go não tem um modelo OOP clássico, o trabalho com objetos é feito via structs e métodos (funções associadas a structs). Fala-se sobre encapsulamento e como realizar a mesma tarefa com uma função comum ou um método.

Interfaces

Capítulo sobre criação e uso de interfaces. Começa com a parte teórica explicando seu propósito e implementação. Interfaces padrão são analisadas, como as de ordenação, servidores web e tratamento de erros. Também são discutidos declarações de tipos e tratamento de falhas. Se antes foi mostrado JSON, aqui temos XML.

Goroutines e canais. Concorrência

Dois capítulos dedicados à programação concorrente. O primeiro foca mais na teoria e exemplos, incluindo canais (bufferizados, unidirecionais) e a construção select.

O segundo capítulo tem menos exemplos e foca nos problemas da concorrência (como race conditions) e como resolvê-los (usando sync.Mutex e sync.RWMutex).

Pacotes e ferramentas do Go

Embora o conceito de módulos já tenha sido introduzido, aqui há um aprofundamento. Importações e uso de bibliotecas externas além das padrão são abordados.

A segunda parte cobre ferramentas do Go: compilação, instalação de pacotes e dependências, testes e organização do ambiente de trabalho e estrutura de diretórios.

Testes

Um dos últimos capítulos cobre testes em Go (go test), brevemente mencionado antes. Também cita bibliotecas externas para testes. A abordagem é padrão: importância dos testes, boas práticas, testes frágeis, cobertura de código, etc.

Reflexão e programação de baixo nível

Dois capítulos finais, curtos, para desenvolvedores experientes. O primeiro cobre reflexão (ex: criação de analisadores estáticos). O segundo fala sobre programação de baixo nível, usando C ou chamadas ao sistema operacional.

Conclusão

Para quem este livro é adequado?

É adequado tanto para iniciantes em Go quanto para desenvolvedores com experiência que desejam aprofundar e sistematizar seus conhecimentos.

Prós:

  • Leitura clara e acessível.
  • Estrutura lógica: cada capítulo segue naturalmente o anterior.
  • Muitos exemplos de código.
  • Exercícios práticos ao final de cada capítulo.

Contras:

  • Não está claro se o livro foi atualizado; não cobre recursos recentes como generics.
  • Mais de 400 páginas — pode ser intimidador para quem não está acostumado com livros técnicos longos.
Вверх