Em Go, uma string é uma sequência imutável de bytes, que não têm necessariamente de representar carateres.
Um literal de string define-se entre aspas duplas:
const name = "Jane"
As strings podem ser concatenadas com o operador +:
"Jane" + " " + "Austen"
// => "Jane Austen"
Alguns carateres especiais têm de ser escapados com uma barra invertida à frente, como \t para uma tabulação e \n para uma nova linha em strings.
"How is the weather today?\nIt's sunny"
// =>
// How is the weather today?
// It's sunny
O pacote strings contém muitas funções úteis para trabalhar com strings.
Para mais informações sobre funções de string, consulta a documentação do pacote strings.
Aqui ficam alguns exemplos:
import "strings"
// strings.ToLower returns the string given as argument with all its characters lowercased
strings.ToLower("MaKEmeLoweRCase")
// => "makemelowercase"
// strings.Repeat returns a string with a substring given as argument repeated many times
strings.Repeat("Go", 3)
// => "GoGoGo"
Como já foi referido, alguns carateres especiais têm de ser escapados com uma barra invertida à frente. Abaixo está uma lista mais detalhada desses carateres especiais:
| Value | Description |
|---|---|
\a |
Alerta ou campainha |
\b |
Retrocesso |
\\ |
Barra invertida |
\t |
Tabulação horizontal |
\n |
Avanço de linha ou nova linha |
\f |
Avanço de página |
\r |
Retorno de carro |
\v |
Tabulação vertical |
\' |
Aspa simples |
\" |
Aspa dupla |
fmt.Println("Joe\nWilliam\nJack\nAverell")
// Output:
// Joe
// William
// Jack
// Averell
Os literais de string em bruto usam acentos graves (`) como delimitador em vez de aspas duplas, e todos os carateres que contêm são interpretados literalmente, ou seja, não é preciso escapar carateres nem novas linhas.
Este é um exemplo de uma string com várias linhas:
const daltons = `Joe
William
Jack
Averell`
Esta string tem várias linhas.
Mais concretamente, tem 3 \n.
No entanto, como se trata de um literal de string em bruto, não precisamos de colocar o \n explicitamente na string.
As novas linhas são interpretadas literalmente.
Aqui ficam mais alguns exemplos que comparam literais de string em bruto com literais de string normais:
`abc`
// same as "abc"
"\"" // regular string literal with 1 character: a double quote
// same as `"` a raw string literal with 1 character: a double quote
`\n
` // raw string literal with 3 character: a backslash, an 'n', and a newline
// same as "\\n\n" a regular string literal with 3 characters: a backslash, an 'n', and a newline
"\t\n" // regular string literal with 2 characters: a tab and a newline
`\t\n`// raw string literal with 4 characters: two backslashes, a 't', and an 'n'