Uma string em Go é uma sequência imutável de bytes, que não precisam necessariamente representar caracteres.
Um literal de string é definido entre aspas duplas:
const name = "Jane"
Strings podem ser concatenadas com o operador +:
"Jane" + " " + "Austen"
// => "Jane Austen"
Alguns caracteres especiais precisam ser escapados com uma barra invertida antes, 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, confira a documentação do pacote strings.
Aqui estão 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 mencionado anteriormente, alguns caracteres especiais precisam ser escapados com uma barra invertida antes. Abaixo está uma lista mais detalhada de quais são esses caracteres especiais:
| Valor | Descrição |
|---|---|
\a |
Alerta ou campainha |
\b |
Backspace |
\\ |
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 |
\' |
Aspas simples |
\" |
Aspas duplas |
fmt.Println("Joe\nWilliam\nJack\nAverell")
// Output:
// Joe
// William
// Jack
// Averell
Os literais de string brutos usam crases (`) como delimitador em vez de aspas duplas, e todos os caracteres neles são interpretados literalmente, ou seja, não é preciso escapar caracteres nem novas linhas.
Este é um exemplo de uma string com várias linhas:
const daltons = `Joe
William
Jack
Averell`
Essa string tem várias linhas.
Mais especificamente, ela tem 3 \n.
Mas, como é um literal de string bruto, não precisamos colocar o \n explicitamente na string.
As novas linhas serão interpretadas literalmente.
Aqui estão outros exemplos comparando literais de string brutos com literais de string comuns:
`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'