Go: verificação de ocorrência de substring em uma string — guia completo

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Como verificar em Go se uma string contém uma substring? Do iniciante ao profissional

\n\n

Você já escreveu em Go e de repente parou diante de uma pergunta simples: "Esta string contém a parte que preciso?" Se sim, você não está sozinho. No Stack Overflow, essa pergunta acumulou milhares de visualizações, e não é à toa. Em Go, existem várias maneiras elegantes de resolver esse problema, mas qual escolher? Vamos entender de uma vez por todas.

\n\n

Neste artigo, não vamos apenas mostrar a função strings.Contains. Vamos ensinar você a pensar como um desenvolvedor Go: escolher a ferramenta ideal para cada situação, evitar armadilhas e escrever código que seja rápido e previsível.

\n\n

Conteúdo

\n\n\n

1. strings.Contains — seu primeiro amigo

\n\n

Vamos começar com a maneira mais simples e popular. A função strings.Contains da biblioteca padrão do Go é o que você precisa em 80% dos casos. Ela retorna true se a string contém a substring especificada e false caso contrário.

\n\n

Veja como fica no código real:

\n\n
package main\n\nimport (\n    "fmt"\n    "strings"\n)\n\nfunc main() {\n    str := "Olá, mundo Go!"\n    substr := "mundo"\n\n    if strings.Contains(str, substr) {\n        fmt.Println("A string contém a substring:", substr)\n    } else {\n        fmt.Println("Substring não encontrada")\n    }\n}\n
\n\n

Saída:

\n
A string contém a substring: mundo
\n\n

Simples, não é? A função diferencia maiúsculas de minúsculas: strings.Contains("Go", "go") retornará false. Se você precisar ignorar maiúsculas/minúsculas, terá que usar strings.ToLower ou strings.EqualFold.

\n\n

Exemplo ignorando maiúsculas/minúsculas

\n\n
str := "Golang é incrível"\nsubstr := "golang"\n\nif strings.Contains(strings.ToLower(str), strings.ToLower(substr)) {\n    fmt.Println("Encontrado (sem diferenciar maiúsculas/minúsculas)!")\n}\n
\n\n

Quando usar: quando você precisa de uma resposta binária simples — "sim" ou "não". Sem detalhes extras.

\n\n

2. strings.Index — quando você precisa saber a posição

\n\n

Às vezes, não basta saber que a substring existe. Você quer entender onde exatamente ela está. Por exemplo, ao analisar um log e querer extrair parte de uma string após um marcador específico. É aí que entra o strings.Index.

\n\n

Esta função retorna o índice da primeira ocorrência da substring (começando em 0) ou -1 se a substring não for encontrada.

\n\n
str := "Erro: arquivo não encontrado em /var/log"\nsubstr := "arquivo"\n\npos := strings.Index(str, substr)\nif pos != -1 {\n    fmt.Printf("Substring encontrada na posição %d\\n", pos)\n    fmt.Printf("Contexto: %s\\n", str[pos:])\n} else {\n    fmt.Println("Substring não encontrada")\n}\n
\n\n

Saída:

\n
Substring encontrada na posição 6\nContexto: arquivo não encontrado em /var/log
\n\n

Existem outras variações:

\n
    \n
  • strings.LastIndex — busca a última ocorrência
  • \n
  • strings.IndexAny — busca a primeira ocorrência de qualquer caractere de um conjunto
  • \n
  • strings.IndexRune — busca um caractere Unicode específico
  • \n
\n\n
// Exemplo com LastIndex\nstr := "a-b-c-d"\nlastDash := strings.LastIndex(str, "-")\nfmt.Println("Último traço na posição:", lastDash) // 5\n\n// Exemplo com IndexAny\nstr2 := "hello world"\npos := strings.IndexAny(str2, "aeiou")\nfmt.Println("Primeira vogal na pos                

Blogs

Book Recommendations