Un string en Go es una secuencia inmutable de bytes, que no necesariamente tienen que representar caracteres.
Un literal de string se define entre comillas dobles:
const name = "Jane"
Los strings se pueden concatenar mediante el operador +:
"Jane" + " " + "Austen"
// => "Jane Austen"
Algunos caracteres especiales necesitan escaparse con una barra invertida inicial, como \t para un tabulador y \n para una nueva línea en strings.
"How is the weather today?\nIt's sunny"
// =>
// How is the weather today?
// It's sunny
El paquete strings contiene muchas funciones útiles para trabajar con strings.
Para obtener más información sobre las funciones de string, consulta la documentación del paquete strings.
Aquí tienes algunos ejemplos:
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 se mencionó anteriormente, algunos caracteres especiales necesitan escaparse con una barra invertida inicial. A continuación se muestra una lista más detallada de cuáles son esos caracteres especiales:
| Valor | Descripción |
|---|---|
\a |
Alerta o campana |
\b |
Retroceso |
\\ |
Barra invertida |
\t |
Tabulador horizontal |
\n |
Avance de línea o nueva línea |
\f |
Avance de página |
\r |
Retorno de carro |
\v |
Tabulador vertical |
\' |
Comilla simple |
\" |
Comilla doble |
fmt.Println("Joe\nWilliam\nJack\nAverell")
// Output:
// Joe
// William
// Jack
// Averell
Los literales de string en bruto utilizan comillas invertidas (`) como delimitador en lugar de comillas dobles y todos los caracteres que contienen se interpretan literalmente, lo que significa que no es necesario escapar caracteres ni nuevas líneas.
Este es un ejemplo de un string multilínea:
const daltons = `Joe
William
Jack
Averell`
Este string tiene múltiples líneas.
Más concretamente, tiene 3 \n.
Sin embargo, como es un literal de string en bruto, no necesitamos poner el \n explícitamente en el string.
Las nuevas líneas se interpretarán literalmente.
Aquí hay otros ejemplos que comparan literales de string en bruto con literales de string normales:
`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'