Go: 100 erros e o cuidado com slices | guia prático
Lucas Carrilho (Dev Magno) destaca um erro comum: inicialização de slices e armadilhas de nil.
Resposta direta
Sobre golang slices: Fala galera, Lucas Carrilho, o Dev Magno na área, e eu tô aqui novamente, pessoal, para convite da RocketSeat para falar de um livro bem interessante de Go, que é 100 Mistakes and How to Avoid Them, que é um livro basicamente de erros de Go e como.
O que o material diz sobre golang slices
O episódio sobre golang slices abre assim: Fala galera, Lucas Carrilho, o Dev Magno na área, e eu tô aqui novamente, pessoal, para convite da RocketSeat para falar de um livro bem interessante de Go, que é 100 Mistakes and How to Avoid Them, que é um livro basicamente de erros de Go e como você evitá-las. Para tradução é 100 erros de Go, umas práticas de Go e como evitá-las, ok? Enfim, quem escreveu esse livro, galera, é o Teia Teiva, se ela me falar um dele, que é um engenheiro de software do Google.
Sênior, claro, um cara experto no que ele faz E ele elencou nesse livro Como você evitar de dar tiros No seu próprio pé quando estiver programando Em Go, apesar da flexibilidade E liberdade que Go te dá É necessário que você faça isso com cautela Esse livro pra mim é um manual Que todo programador de Go E até de outras linguagens que goste De estudar, deveria ler Porque ele aborda temas muito Interessantes e a forma de programar Também ele dá dicas bem legais Ok? E bom e vamos para o repositório agora vamos até linha eu deixei aqui tá tá com o nome de repositório gols cinco mistakes e tem aqui o link tarde que leva direto a documentação aqui beleza todos os erros aqui recomendo você dá uma lidinha você não quiser comprar o livro também tem mais uma gente online tudo nesse livro aqui eu selecionei assim que eu gosto de trabalhar tá bom como é que funciona mais bom vamos vamos que interessa né fazer código né pessoal repositório clonado vamos criar aqui ó nem. A gente tem essa função que basicamente verifica o acesso a uma festa, uma balada.
E nela, a gente olha se a idade é maior ou igual a zero. Como é que a gente deve refazer isso aqui seguindo boas práticas em Go, por exemplo? Como é que a gente poderia fazer isso aqui de forma mais adequada?
Para `go-100-erros-slices-vazios`, preserve só o que muda uma decisão observável esta semana. Se o trecho for opinião, rotule como opinião — não fabrique métrica ausente do áudio.
Âncora
Use cenas e mecanismos da transcrição de «golang slices»; não invente fatos.
Mecanismo e restrição em golang slices
No miolo do material de golang slices, o mecanismo fica explícito: Depois, nós vamos fazer, se a idade for menor que 18 anos, retorne, precisa de ser maior de idade. E eu já gravei a gente falar com ela isso aqui ó retorne pode entrar e nesse caso aqui galera não tem necessidade desse Elcio que a gente for analisar o fluxo ele vai cair aqui isso aqui é uma parada que ele bate bastante no livro ele já vai cair por aqui ele já fez a primeira validação já fez a segunda ele vai automaticamente cair aqui não tem cidade você tem um Elcio nesse ponto aqui tá bom então evite esse e fiel ser excessivo tá e esses looks alinhar alinhados demais Isso faz com que você tenha um código mais legível, mais claro para você ver as validações, tá bom? Para quem não sabe, pessoal, a regra 55, tá?
Vamos fazer, eu até peguei um desenho que eu achei bem interessante aqui, ó. Já no núcleo 1, que é o cara que tem a hambúrguerinha do bairro. Depois ele vai mexer com outra coisa, ele vai mexer com outra coisa Em gol Isso são conceitos bem necessários, porque quando a gente pega e divide um processo, por exemplo, utilizando como, por exemplo, o GoRoutines, a gente vai ter a aplicação desses dois conceitos na prática.
E a concorrência e o paralelismo tem que estar bem claro na sua cabeça. A concorrência, galera, não quer dizer que, por exemplo, o processo 1 parou e ele vai ficar à toa, não. E o processo 2 parou, fez aquilo que tinha que fazer, pega outra task.
Para `go-100-erros-slices-vazios`, preserve só o que muda uma decisão observável esta semana. Se o trecho for opinião, rotule como opinião — não fabrique métrica ausente do áudio.
Decisões práticas ligadas a golang slices
As decisões práticas que aparecem quando o tema é golang slices: Você recebe uma lista com 50 entradas de deleções no banco de dados. Você pode muito bem, ao invés de fazer deleta 1, deleta 2, deleta 3, deleta 4 com uma rotina só, você pode dividir. Você divide em 10 rotinas, cada uma vai deletar 5 registros no banco de dados.
Dá 0 até a 4, um pega, dá 5 até a 9, a outra pega, e por aí vai dividindo essa atividade. Então, a gente vai paralelizar esse processo, fazer que tudo aconteça ao mesmo tempo. E bom É bom ter esse conceito bem claro na sua cabeça se você quer programar em Go.
O terceiro exemplo, galera, é a gente confundir slices new ou, como eu falei na última aula, uma analogia a nulos com slices vazios. Porque às vezes a gente pode retornar, acabar retornando listas nulas ou acabar fornecendo elementos nulos. Isso pode acabar quebrando quando a gente trabalha com web e um conceito de JSON também.
Para `go-100-erros-slices-vazios`, preserve só o que muda uma decisão observável esta semana. Se o trecho for opinião, rotule como opinião — não fabrique métrica ausente do áudio.
Onde o fluxo de golang slices quebra
Onde o fluxo costuma quebrar, segundo a fonte de golang slices: Então, quando você vai escrever uma função, por exemplo, vamos escrever aqui, imagina que a gente trabalha para uma banca de concurso. E vamos colocar a calcula média um botar o colar médio não verifica inscritos um curso a gente quer ser um código do concurso código código concurso idade gente a gente vai receber uma lista de string que bastante vai ser o nome de todo mundo que tá escrito aquele Faz o método imaginário aí A gente, quando for retornar nesse caso aqui, galera, a gente tem que retornar isso aqui. Ou seja, você está evitando futuros new checks necessários, futuras possibilidades de você ter falhas por new.
Bom, agora, o próximo ponto que eu quero fazer com vocês é o quê? O que é ignorar erros de função, pessoal? Ignorar erros de função, basicamente, vai ser isso aqui.
A gente tem duas variáveis, valor e, olha só, a segunda, que é um retorno dessa função do atoy. Se tem um erro ali, tem algum motivo de estar ali. Só que ela serve para a gente converter um número que está escrito em string.
Para `go-100-erros-slices-vazios`, preserve só o que muda uma decisão observável esta semana. Se o trecho for opinião, rotule como opinião — não fabrique métrica ausente do áudio.
Atenção
Falsas vitórias em golang slices: demo sem dado, integração sem observabilidade, narrativa sem evidência.
Como explicar golang slices sem hype
Traduzindo o trecho de golang slices para quem não viu o vídeo: Por exemplo, sei lá, tem uma coluna do banco de dados que só é gravado o número, a gente ia converter ela para 20, para calcular menos 1, mais 1, mais 10, mais 20, enfim, não interessa. Agora, a partir do momento que a gente coloca abc isso aqui e roda esse código, aqui ele deveria acusar um erro, só que ele está rodando vazio. 10 por causa de fute entendeu não faça isso que você tem que fazer nesses casos você vai tratar o erro valor erro e diferente de mil você vai pegar e vai soltar o erro aqui é falha na conversão eu aqui nesse caso pode usar um elcio tá galera a gente tem que entrar valor base Então, olha só o que vai acontecer.
Então, esse ponto é necessário, pessoal, para que a gente consiga fazer o tratamento adequado dos erros. Deveria dar erro e é nil, porque esse valor é nulo. É o range, basicamente a forma que a gente tem de percorrer elementos em Go.
Só que lá na memória, o pessoas está intacto, porque a gente está mandando printar pessoas. Quando o Go percorre as listas, ele percorre o loop sem adentrar no objeto original, que seria as pessoas da lista original. Porque quando você trabalha com paralelismo e concorrência em Go, você tem que tomar bastante cuidado com operações que as Go Routines, que são a forma de a gente trabalhar com paralelismo em Go, estão agindo nesse caso.
Para `go-100-erros-slices-vazios`, preserve só o que muda uma decisão observável esta semana. Se o trecho for opinião, rotule como opinião — não fabrique métrica ausente do áudio.
Checklist observável para golang slices
Para fechar o ciclo de golang slices com evidência do próprio material: O ponto nome alterado veja bem eu não vou trabalhando mais com as cópias e eu tô trabalhando com a lista pessoas Ok e quando for nas pode no vale interessante as nossas cópias tá vendo e ficaram intactas mas a nossa lista foi modificada e é dessa forma que você tem que saber trabalhar principalmente em contexto de paralelismo e concorrência com o pessoal espero que tenham Isso é. Cinco errinhos ali foram os que eu achei mais interessante trazer para a nossa aula. Se você gostou, curte, compartilhe e se inscreve no canal da RocketSeat, que só tem conteúdo sensacional por aqui.
Fala galera, Lucas Carrilho, o Dev Magno na área, e eu tô aqui novamente, pessoal, para convite da RocketSeat para falar de um livro bem interessante de Go, que é 100 Mistakes and How to Avoid Them, que é um livro basicamente de erros de Go e como você evitá-las. Para tradução é 100 erros de Go, umas práticas de Go e como evitá-las, ok? Enfim, quem escreveu esse livro, galera, é o Teia Teiva, se ela me falar um dele, que é um engenheiro de software do Google.
Sênior, claro, um cara experto no que ele faz E ele elencou nesse livro Como você evitar de dar tiros No seu próprio pé quando estiver programando Em Go, apesar da flexibilidade E liberdade que Go te dá É necessário que você faça isso com cautela Esse livro pra mim é um manual Que todo programador de Go E até de outras linguagens que goste De estudar, deveria ler Porque ele aborda temas muito Interessantes e a forma de programar Também ele dá dicas bem legais Ok? E bom e vamos para o repositório agora vamos até linha eu deixei aqui tá tá com o nome de repositório gols cinco mistakes e tem aqui o link tarde que leva direto a documentação aqui beleza todos os erros aqui recomendo você dá uma lidinha você não quiser comprar o livro também tem mais uma gente online tudo nesse livro aqui eu selecionei assim que eu gosto de trabalhar tá bom como é que funciona mais bom vamos vamos que interessa né fazer código né pessoal repositório clonado vamos criar aqui ó nem. A gente tem essa função que basicamente verifica o acesso a uma festa, uma balada.
Para `go-100-erros-slices-vazios`, preserve só o que muda uma decisão observável esta semana. Se o trecho for opinião, rotule como opinião — não fabrique métrica ausente do áudio.
Sinais de progresso em golang slices
Mais um recorte útil sobre golang slices antes de virar padrão do time: E nela, a gente olha se a idade é maior ou igual a zero. Como é que a gente deve refazer isso aqui seguindo boas práticas em Go, por exemplo? Como é que a gente poderia fazer isso aqui de forma mais adequada?
Depois, nós vamos fazer, se a idade for menor que 18 anos, retorne, precisa de ser maior de idade. E eu já gravei a gente falar com ela isso aqui ó retorne pode entrar e nesse caso aqui galera não tem necessidade desse Elcio que a gente for analisar o fluxo ele vai cair aqui isso aqui é uma parada que ele bate bastante no livro ele já vai cair por aqui ele já fez a primeira validação já fez a segunda ele vai automaticamente cair aqui não tem cidade você tem um Elcio nesse ponto aqui tá bom então evite esse e fiel ser excessivo tá e esses looks alinhar alinhados demais Isso faz com que você tenha um código mais legível, mais claro para você ver as validações, tá bom? Para quem não sabe, pessoal, a regra 55, tá?
Vamos fazer, eu até peguei um desenho que eu achei bem interessante aqui, ó. Já no núcleo 1, que é o cara que tem a hambúrguerinha do bairro. Depois ele vai mexer com outra coisa, ele vai mexer com outra coisa Em gol Isso são conceitos bem necessários, porque quando a gente pega e divide um processo, por exemplo, utilizando como, por exemplo, o GoRoutines, a gente vai ter a aplicação desses dois conceitos na prática.
Para `go-100-erros-slices-vazios`, preserve só o que muda uma decisão observável esta semana. Se o trecho for opinião, rotule como opinião — não fabrique métrica ausente do áudio.
Recortes adicionais da fonte sobre golang slices
Estes trechos reforçam o raciocínio de `go-100-erros-slices-vazios` sem resumo genérico:
Fala galera, Lucas Carrilho, o Dev Magno na área, e eu tô aqui novamente, pessoal, para convite da RocketSeat para falar de um livro bem interessante de Go, que é 100 Mistakes and How to Avoid Them, que é um livro basicamente de erros de Go e como você evitá-las. Para tradução é 100 erros de Go, umas práticas de Go e como evitá-las, ok? Enfim, quem escreveu esse livro, galera, é o Teia Teiva, se ela me falar um dele, que é um engenheiro de software do Google.
Sênior, claro, um cara experto no que ele faz E ele elencou nesse livro Como você evitar de dar tiros No seu próprio pé quando estiver programando Em Go, apesar da flexibilidade E liberdade que Go te dá É necessário que você faça isso com cautela Esse livro pra mim é um manual Que todo programador de Go E até de outras linguagens que goste De estudar, deveria ler Porque ele aborda temas muito Interessantes e a forma de programar Também ele dá dicas bem legais Ok? E bom e vamos para o repositório agora vamos até linha eu deixei aqui tá tá com o nome de repositório gols cinco mistakes e tem aqui o link tarde que leva direto a documentação aqui beleza todos os erros aqui recomendo você dá uma lidinha você não quiser comprar o livro também tem mais uma gente online tudo nesse livro aqui eu selecionei assim que eu gosto de trabalhar tá bom como é que funciona mais bom vamos vamos que interessa né fazer código né pessoal repositório clonado vamos criar aqui ó nem. A gente tem essa função que basicamente verifica o acesso a uma festa, uma balada.
E nela, a gente olha se a idade é maior ou igual a zero. Como é que a gente deve refazer isso aqui seguindo boas práticas em Go, por exemplo? Como é que a gente poderia fazer isso aqui de forma mais adequada?
Depois, nós vamos fazer, se a idade for menor que 18 anos, retorne, precisa de ser maior de idade. E eu já gravei a gente falar com ela isso aqui ó retorne pode entrar e nesse caso aqui galera não tem necessidade desse Elcio que a gente for analisar o fluxo ele vai cair aqui isso aqui é uma parada que ele bate bastante no livro ele já vai cair por aqui ele já fez a primeira validação já fez a segunda ele vai automaticamente cair aqui não tem cidade você tem um Elcio nesse ponto aqui tá bom então evite esse e fiel ser excessivo tá e esses looks alinhar alinhados demais Isso faz com que você tenha um código mais legível, mais claro para você ver as validações, tá bom? Para quem não sabe, pessoal, a regra 55, tá?
Vamos fazer, eu até peguei um desenho que eu achei bem interessante aqui, ó. Já no núcleo 1, que é o cara que tem a hambúrguerinha do bairro. Depois ele vai mexer com outra coisa, ele vai mexer com outra coisa Em gol Isso são conceitos bem necessários, porque quando a gente pega e divide um processo, por exemplo, utilizando como, por exemplo, o GoRoutines, a gente vai ter a aplicação desses dois conceitos na prática.
E a concorrência e o paralelismo tem que estar bem claro na sua cabeça. A concorrência, galera, não quer dizer que, por exemplo, o processo 1 parou e ele vai ficar à toa, não. E o processo 2 parou, fez aquilo que tinha que fazer, pega outra task.
Internalize com links reais do ecossistema CrazyStack: /blog, /curso-cursor-avancado-configuracoes-pro, /curso-claude-code-9-dicas-profissionais, /programa-crazystack e /checklist-independencia-cursor.