Como trabalhar com strings na linguagem Go?
sobes.tech IA
Resposta da IA
As cadeias em Go são sequências imutáveis de bytes. Podem representar tanto texto UTF-8 quanto dados binários arbitrários.
Principais formas de trabalhar:
-
Declaração e inicialização:
var s1 string // Cadeia vazia s2 := "olá" // Inicialização com literal de cadeia s3 := `multilinha cadeia` // Literal de cadeia bruto -
Comprimento da cadeia:
len(s2) // Comprimento em bytes. Para "olá" será 3. -
Acesso aos bytes:
b := s2[0] // Obter o byte no índice. Retorna 'o' (em UTF-8).O acesso direto aos bytes não garante obter um carácter UTF-8 completo.
-
Acesso às runas (caracteres UTF-8): As cadeias podem ser iteradas por runas:
for index, runeValue := range s2 { fmt.Printf("Índice: %d, Runa: %c\n", index, runeValue) }Comprimento em runas:
utf8.RuneCountInString(s2) // Comprimento em runas. Para "olá" será 3. -
Concatenação de cadeias:
str1 := "hello" str2 := " world" result := str1 + str2 // Concatenação com +Para concatenação eficiente de muitas cadeias, use
strings.Builder.var sb strings.Builder sb.WriteString("hello") sb.WriteString(" ") sb.WriteString("world") result := sb.String() // Obter a cadeia resultante -
Conversão entre cadeias e slices de bytes/runes:
byteslice := []byte(s2) // Cadeia para slice de bytes rs := []rune(s2) // Cadeia para slice de runas backToString := string(byteslice) // Slice de bytes para cadeia backToString = string(rs) // Slice de runas para cadeia -
Pacote
strings: Oferece muitas funções úteis:Contains,HasPrefix,HasSuffixIndex,LastIndexReplace,ToUpper,ToLower,Trim,TrimSpaceSplit,Join
-
Pacote
strconv: Para converter cadeias em outros tipos de dados (números, booleanos) e vice-versa.i, err := strconv.Atoi("123") // Cadeia para int s := strconv.Itoa(456) // int para cadeia -
Imutabilidade: Quaisquer operações que parecem modificar uma cadeia (por exemplo, concatenação) na verdade criam uma nova cadeia. Isso é importante para o desempenho em alterações frequentes. Nesses casos, é melhor usar
[]byteoustrings.Builder.