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 con el operador +:
"Jane" + " " + "Austen"
// => "Jane Austen"
Algunos caracteres especiales necesitan escaparse con una barra invertida al inicio, como \t para una tabulación y \n para una nueva línea dentro de los 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 más información sobre las funciones de strings, 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ó antes, algunos caracteres especiales necesitan escaparse con una barra invertida al inicio. A continuación tienes una lista más detallada de cuáles son esos caracteres especiales:
| Value | Description |
|---|---|
\a |
Alerta o campana |
\b |
Retroceso |
\\ |
Barra invertida |
\t |
Tabulación horizontal |
\n |
Salto de línea o nueva línea |
\f |
Avance de página |
\r |
Retorno de carro |
\v |
Tabulación vertical |
\' |
Comilla simple |
\" |
Comilla doble |
fmt.Println("Joe\nWilliam\nJack\nAverell")
// Output:
// Joe
// William
// Jack
// Averell
Los literales de string sin procesar usan backticks (`) como delimitador en lugar de comillas dobles, y todos los caracteres que contienen se interpretan de forma literal, lo que significa que no hay necesidad de escapar caracteres ni saltos de línea.
Este es un ejemplo de un string de varias líneas:
const daltons = `Joe
William
Jack
Averell`
Este string tiene varias líneas.
Más específicamente, tiene 3 \n.
Sin embargo, como es un literal de string sin procesar, no necesitamos poner los \n explícitamente en el string.
Las nuevas líneas se interpretarán de forma literal.
Aquí tienes otros ejemplos que comparan los literales de string sin procesar con los 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'