Clique sobre os tópicos listados abaixo para navegar até o conteúdo desejado.

  1. Entender como declarar uma string
  2. Entender acessar caracteres contidos em uma string
  3. Entender como percorrer uma string
  4. Como descobrir o tamanho de uma string
  5. Entender como alterar um caractere de uma string
  6. Entender como concatenar strings
  7. Entender como usar strings como parâmetro,argumento e retorno de função
  8. Entender como copiar string
  9. Funções do package strings

O tipo de dado string é uma cadeia de caracteres justapostos. Abaixo uma abstração da representação de uma string em um local de memória. Em Go, utilizamos a palavra reservarda string diferente de C que utiliza vetor de char, por exemplo.

0 1 2 3 4 5 6
's' 't' 'r' 'i' 'n' 'g' '\0'

Para a declaração de um string em Go, podemos utilizando a sintaxe que pode ser vista abaixo.

Sintaxe
var nome_variavel string; 
var nome_variavel string = "conteudo string";
Onde
-

As strings declaradas e atribuídas com uma valor incial são imutáveis. Sendo assim, não podemos alterar seus elementos após a atribuição.

A alteração de string em Go é feita via funções que alteram seu conteúdo retornando uma nova string. Essas funções serão vistas mais adiante.

Exemplo 1
package main

func main() {
	var str1 string 
	var str2 string = "uma string Go"	
}
Saída
str1 declared and not used

Para criarmos uma string baseada em um outra string, utilizamos o construtor do tipo de dado string.

Sintaxe
var variavel_string = string("conteudo da string")
Onde
-
Exemplo 2
package main
import "fmt"

func main() {
	var str = "string qualquer"
	var str2 = string(str)
	fmt.Printf(str2)
}
Saída
string qualquer

O acesso as caracteres de uma string em Go é feita utilizando o indexador [] que recebe um índice ou posição do caractere como argumento.

Sintaxe
variavel_string[indice]
Onde
indice: índice ou posição do caracter
Exemplo 3
package main
import "fmt"

func main() {

	var str2 string = "uma string Go"

	fmt.Println(str2[0])
	fmt.Printf("%c", str2[0])
}
Saída
117
u

Para descobrirmos o tamanho de uma string em Go, utilizamos a função len que retorna um inteiro contendo o tamanho da string.

Sintaxe
len(variavel_string)
Exemplo 4
package main

import "fmt"

func main() {

	var str2 string = "uma string Go"

	fmt.Println(len(str2))
}
Saída
13

Para termos acesso aos caracteres contidos em uma string, podemos fazer de duas formas básicas: utilizando for e for + range.

Os comandos de repetição podem ser vistos em Go: Comandos de Repetição

Exemplo 5
package main
import "fmt"

func main() {

	var minha_string string = "uma string qualquer"

	for i := range minha_string {
		fmt.Printf("%c ", minha_string[i])
	}
}
Saída
u m a   s t r i n g   q u a l q u e r 
Exemplo 6
package main
import "fmt"

func main() {

	var minha_string string = "uma string qualquer"

	for i := 0; i < len(minha_string); i++ {
		fmt.Printf("%c ", minha_string[i])
	}
}
Saída
u m a   s t r i n g   q u a l q u e r 

A concatenação de strings na linguagem Go segue o mesmo padrão de outras linguagens como Java e C# que utilizam operador aritmético "+" como operador de concatenação.

Sintaxe
variavel_string1 + variavel_string2
Exemplo 7
package main
import "fmt"

func main() {

	var str1 = "string1"
	var str2 = "string2"

	str3 := str1 + str2
	fmt.Printf("%s", str3)
}
Saída
string1string2

Uma forma simples de comparação entre strings é feita utilizando os operadores relacionais == e != . Se o resultado da comparação retornar true as strings são iguais, caso contrário, são diferentes.

Sintaxe
variavel_string1 == variavel_string2
Exemplo 8
package main

import (
	"fmt"
)

func main() {

	var str1 = "string1"
	var str2 = "string1"
	var str3 = "string2"

	fmt.Printf("str1 == str2 :%t\n", str1 == str2)
	fmt.Printf("str1 == str3 :%t\n", str1 == str3)
	fmt.Printf("str3 == str1 :%t", str3 == str1)

}
Saída
str1 == str2 :true
str1 == str3 :false
str3 == str1 :false

O package strings fornece funções para manipular nossas strings. Esse package é importado utilizando a sintaxe abaixo:

Sintaxe
import ( 
     "strings"
)

Abaixo uma tabela com todas as funções disponíveis. Clique no link Visitar para ver mais sobre cada função.

Método Descrição Link
Clone Clona uma string -
Compare - -
Contains Verifica se string contem uma substring Visitar
ContainsAny Verifica se algum caracteres está contido em um string Visitar
ContainsFunc Verifica se um string contem uma substring baseado em uma função -
ContainsRune - -
Count Retorna o número de ocorrências de uma substring Visitar
Cut - -
CutPrefix - -
CutSuffix - -
EqualFold - -
Fields - -
FieldsFunc - -
HasPrefix Verifica se string inicia com um determinado prefixo Visitar
HasSuffix Verifica se string inicia com um determinado prefixo Visitar
Index Retorna o índice da primeira ocorrência de uma substring Visitar
IndexAny Retorna o índice da primeira ocorrência de algum dos caracteres informados Visitar
IndexByte - -
IndexFunc - -
IndexRune - -
Join Retorna a união de duas string Visitar
LastIndex Retorna o índice da última ocorrência de uma substring Visitar
LastIndexAny - -
LastIndexByte - -
LastIndexFunc - -
Map - -
Repeat Repete uma string Visitar
Replace Substitui a primeira ocorrência de uma substring Visitar
ReplaceAll Substitui todas as ocorrências de uma substring Visitar
Split "Quebra" uma string em substrings Visitar
SplitAfter - -
SplitAfterN - -
SplitN - -
Title - -
ToLower Converte para minúsculas Visitar
ToLowerSpecial - -
ToTitle -
ToTitleSpecial - -
ToUpper Converte para maiúscula Visitar
ToUpperSpecial - -
ToValidUTF8 - -
Trim Remove caracteres do início e fim Visitar
TrimFunc - -
TrimLeft - -
TrimPrefix Remove caracteres do início Visitar
TrimRight - -
TrimRightFunc - -
TrimSpace Remove os espaço em branco do início e fim
TrimSuffix Remove caracteres do início Visitar

O método Contains é utilizado verificar se um substring passada como argumentos está contida em um string.

Sintaxe
func Contains(str, chstr string) bool
Onde
str: string em que desejamos realizar a verificação
chstr: substring ou sequência de caracteres para verificar
Retorno
Retorna um booleano. 
true se chrstr estiver contida em str, false caso contrário.
Exemplo
package main

import (
	"fmt"
	"strings"
)

func main() {

	var str1 string = "exemplo de contains: SplitAfterN"
	var existe bool = strings.Contains(str1, "SplitAfterN")
	fmt.Printf("%t", existe)

}
Saída
true

Com o método ContainsAny podemos verificar a existência de um ou mais caracteres está contidos em um string.

Sintaxe
func ContainsAny(str, chstr string) bool
Onde
str: string em que desejamos realizar a verificação
chstr: sequência de caracteres para verificar
Retorno
Retorna um booleano. 
true se algum caracter contido em chrstr for encontrado em str, false caso contrário.
Exemplo
package main

import (
	"fmt"
	"strings"
)

func main() {

	var str1 string = "exemplo de;splitamento;de string;com SplitAfterN"
	var existe bool = strings.ContainsAny(str1, "!@#$%")
	fmt.Printf("%t\n", existe)
	existe = strings.ContainsAny(str1, "aeiou")
	fmt.Printf("%t", existe)
}
Saída
false
true

A função Count é utilizada para contar o número de ocorrências de uma substring ou padrão contidos em uma string passada como argumento para a função.

Sintaxe
func Count(str string, costr int) string
Onde
str: string em que desejamos realizar a contagem
costr: substring ou sequência de caracteres para contar ocorrências
Retorno
Um int contendo o número de ocorrências de costr ou -1.
Exemplo
package main

import (
	"fmt"
	"strings"
)

func main() {
	var str1 string = "# contar número de ''#'' em # toda # string #"
	fmt.Printf("Ocorrências: %d\n", strings.Count(str1, "#"))
}
Saída
5

Usando a função HasPrefix é utilizada para verificar se uma string é iniciada por um determinado prefixo passado como argumento para a função.

Sintaxe
func HasPrefix(s string, prefix int) string
Onde
s: string em que desejamos realizar a verificação
prefix: Prefixo que será verificado se está presente no início de s
Retorno
Um booleano:
true se s é iniciada por prefix, false caso contrário
Exemplo
package main

import (
	"fmt"
	"strings"
)

func main() {
    var str1 string = "verificar se termina com tag #teste#"
    fmt.Printf("%t\n",strings.HasSufix(str1,"#teste#"))
}
Saída
true

Utilizando a função HasPrefix podemos verificar se uma string é finalizada por um determinado sufix passado como argumento para a função.

Sintaxe
func HasSufix(s string, sufix int) string
Onde
s: string em que desejamos realizar a verificação
sufix: Sufixo que será verificado se está presente no fim de s
Retorno
Um booleano:
true se s é iniciada por prefix, false caso contrário
Exemplo
package main

import (
	"fmt"
	"strings"
)

func main() {
    var str1 string = "#teste#verificar se começa com tag"
    fmt.Printf("%t\n",strings.HasPrefix(str1,"#teste#"))
}
Saída
true

Com o método Index podemos buscar o índice da primeira ocorrência de uma substring que é passada como argumento para essa função.

Sintaxe
func Index(s) string
Onde
str: string em que desejamos realizar a busca
substr: sequência de caracteres para verificar
Retorno
Um int contendo o índice da primeira ocorrência de substr em s ou -1 caso contrário.
Exemplo
package main

import (
	"fmt"
	"strings"
)

func main() {

	var str1 string = "buscar indice desse -> # e nao desse -> #"
	fmt.Printf("%d\n", strings.Index(str1, "#"))
}
Saída
23

O método Join é utilizado para unir várias string que são passadas como argumento. Um separador é utilizado para a união.

Sintaxe
strings.Join(elems []strings, sep string) string
Onde
elems: Vetor contendo strings para união/concatenação
sep: String contendo um separador que será utilizado
Retorno
String contidas em elems separadas por sep
Exemplo
package main

import (
	"fmt"
	"strings"
)

func main() {

	_strings := []string{"string1", "string2"}
	ret_join := strings.Join(_strings, ";")
	fmt.Printf("%s", ret_join)

}
Saída
string1;string2

Utilizando a função LastIndex podemos buscar o índice da última ocorrência de uma substring que é passada como argumento para essa função.

Sintaxe
func LastIndex(s) string
Onde
s: string em que desejamos realizar a busca
substr: sequência de caracteres para verificar
Retorno
Um int contendo o índice da última ocorrência de substr em s ou -1 caso contrário.
Exemplo
package main

import (
	"fmt"
	"strings"
)

func main() {

	var str1 string = "buscar indice não desse -> # , mas desse -> #"
	fmt.Printf("%d\n", strings.LastIndex(str1, "#"))
}
Saída
23

Com a função Replace podemos substituir ocorrência de uma substring por uma nova substring.

Sintaxe
func Replace(s string, old string, new string ,n int) string
Onde
s: string em que desejamos substituir substrings
old: substring que será substituída
new: substring para substituição de old
n: Número de substituições. Se n < 0 sem limites para substituição
Retorno
Uma nova string contendo new substitída em s.
Exemplo
package main

import (
	"fmt"
	"strings"
)

func main() {

	var str1 string = "string para substituir # por alguma coisa"
	fmt.Printf("%s\n", strings.Replace(str1, "#", "\":)\"", 1))

}
Saída
string para substituir ":)" por alguma coisa

A função ReplaceAll é utilizada para substituir todas as ocorrência de uma substring por uma nova substring.

Sintaxe
func Replace(s string, old string, new string) string
Onde
s: string em que desejamos substituir substrings
old: substring que será substituída
new: substring para substituição de old
Retorno
Uma nova string contendo new substitída em s.
Exemplo
package main

import (
	"fmt"
	"strings"
)

func main() {

    var str1 string = "substituir # em # todas # ocorrências #"
    fmt.Printf("%s\n",strings.Replace(str1,"#","\":)\"",1))
}
Saída
substituir ":)" em ":)" todas ":)" ocorrências ":)"

Utilizando a função Repeat podemos repetir o conteúdo de uma string ou padrão em um numéro de N vezes que é passado como argumento para a função.

Sintaxe
func Repeat(str string, count int) string
Onde
s: string em que desejamos realizar a busca
substr: sequência de caracteres para verificar
Retorno
Um nova string contendo str repetida pelo número de vezes count.
Exemplo
package main

import (
	"fmt"
	"strings"
)

func main() {

	var str1 string = "buscar indice não desse -> # , mas desse -> #"
	fmt.Printf("%d\n", strings.LastIndex(str1, "#"))
}
Saída
23

Utilizando o método ToLower podemos converter os caracteres de um string para sua forma minúscula.

Sintaxe
func ToLower(s) string
Onde
s: string para conversão
Retorno
Uma string contendo s em forma maiúscula.
Exemplo
package main

import (
	"fmt"
	"strings"
)

func main() {

	var str2 string = "EXEMPLO"
	fmt.Printf("%s", strings.ToLower(str2))
}
Saída
exemplo

Utilizando o método ToUpper podemos converter os caracteres de um string para sua forma minúscula.

Sintaxe
func ToUpper(s) string
Onde
s: string para conversão
Retorno
Uma string contendo s em forma maiúsculas
Exemplo
package main

import (
	"fmt"
	"strings"
)

func main() {

	var str2 string = "exemplo"
	fmt.Printf("%s", strings.ToUpper(str2))
}
Saída
EXEMPLO

A função Trim remove uma substring ou sequncia de caracteres do início e fim de uma string que é passada como argumento.

Sintaxe
func Trim(str string, cutstr string) string
Onde
str: string para remover os caracteres ou substring
custr: substring ou sequência de caracteres para remoção
Retorno
Uma nova string contendo str em que custr foi removida do início e fim. 
Exemplo
package main

import (
	"fmt"
	"strings"
)

func main() {

	var str string = "@-?-remover do incio/fim_#_!"
	fmt.Printf("Antes: %s\n", str)
	ret := strings.Trim(str, "_#!@-?")
	fmt.Printf("Depois: %s", ret)
}
Saída
Antes: @-?-remover do incio/fim_#_!
Depois: remover do inciio/fim

A função TrimLeft remove uma substring ou sequncia de caracteres do início de uma string que é passada como argumento.

Sintaxe
func TrimLeft(str strin, cutstr string) string
Onde
str: string para remover os caracteres ou substring
custr: substring ou sequência de caracteres para remoção
Retorno
Uma nova string contendo str que custr foi removido do início.
Exemplo
package main

import (
	"fmt"
	"strings"
)

func main() {

	var str string = "@-?-remover do incio/fim_#_!"
	fmt.Printf("Antes: %s\n", str)
	ret := strings.TrimLeft(str, "_#!@-?")
	fmt.Printf("Depois: %s", ret)
}
Saída
Antes: @-?-remover do incio/fim_#_!
Depois: remover do incio/fim_#_!

Usando a função TrimLeft podemos remover uma substring ou sequncia de caracteres do fim de uma string que é passada como argumento.

Sintaxe
func TrimRight(str string, cutstr string) string
Onde
str: string para remover caracteres ou substring
custr: substring ou sequência de caracteres para remoção
Retorno
Uma nova string contendo str sem custr no fim.
Exemplo
package main

import (
	"fmt"
	"strings"
)

func main() {

	var str string = "@-?-remover do incio/fim_#_!"
	fmt.Printf("Antes: %s\n", str)
	ret := strings.TrimRight(str, "_#!@-?")
	fmt.Printf("Depois: %s", ret)
}
Saída
Antes: @-?-remover do incio/fim_#_!
Depois: @-?-remover do incio/fim
  1. 17/09/2024 - revisão 3 - Correção em numeração de exemplos, sintaxe/saída de len; ajustes gramaticais
  2. 30/08/2024 - revisão 2 - Correção em links de objetivos
  3. 02/10/2023 - revisão 1 - Correção em referências, erros gramaticais<;li>
  4. 21/08/2023 - versão inicial