St

Strings em Go

1 exercício

Sobre Strings

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"

Carateres especiais

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

Literais de string em bruto

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'
Editar via GitHub A ligação abre numa nova janela ou separador

Aprende Strings