OVHcloud permite a gestão de clusters Kubernetes em escala
19 de março de 2024Uma jornada de código aberto para ambientes nativos de nuvem mais ecológicos
20 de março de 2024Na linguagem de programação Go, a formatação de string, também conhecida como interpolação de string, ocorre quando você insere uma string ou variável personalizada em um texto predefinido. Funciona assim:
a = "New Stack" "I want to say a big hello to " a "!"
O que você vê acima não é um código que funcionaria em qualquer linguagem, mas ilustra o que quero dizer. Você tem a string:
I want to say a big hello to !
Após a palavra to, você deseja inserir uma string personalizada (New Stack) no texto predefinido, de forma que seja:
<em>I want to say a big hello to New Stack!</em>
A variável a é nossa string personalizada e todo o resto é o texto predefinido.
A linguagem Go também tem esse recurso e é algo que você deve aprender no início de sua jornada.
Antes de aprender como formatar strings em Golang, você precisará entender o conceito de impressão de verbos. Se você já escreveu um script bash no Linux, talvez os ache familiares. Esses verbos sempre começam com um caractere % e podem ser usados em uma linha do seu texto pré-definido.
Digamos que você tenha a string:
Your name is: and you are years old
O que você deseja fazer é usar a formatação de string para inserir um nome e uma idade na string. Para isso, você pode usar o verbo de impressão %s, que é o verbo básico de impressão de strings, e o verbo %d, que serve para formatação de base 10 (o sistema de valores posicionais que usa números decimais). A linha acima, com os verbos adicionados, ficaria mais ou menos assim:
Your name is: %s, and you are %d years old.
Uma amostra de possíveis verbos para impressão de strings inclui:
- %b – base-2
- %c – um caractere representado pelo seu valor Unicode correspondente
- %o – base-8
- %O – base-8 com o prefixo Oo adicionado
- % q – um caractere entre aspas simples
- %x – base-16
- %X – base 16 com letras maiúsculas
- %VOCÊ – formato Unicode
- %b – notação científica sem decimal com potência de expoente de 2.
- %e – notificação científica
- %Sim – notação científica com letras maiúsculas
- %f – ponto decimal sem expoente
Claro, não é tão simples porque você precisa programar um pouco mais para fazê-lo funcionar. Você também precisará fazer uso do sprintf() função, que retorna uma string formatada e oferece suporte a especificadores de formato personalizados. sprintf() é encontrado dentro do fmt pacote, portanto ele deve ser importado antes que seus aplicativos possam usar a funcionalidade.
Há também o imprimirf() função. Qual é a diferença? Simplificando, imprimirf() envia saída para saída padrão (fluxo de saída padrão) e sprintf() armazena os dados formatados em um buffer alocado por você. Em nosso exemplo abaixo, usaremos ambas as funções, a primeira para armazenar a string em um buffer e a segunda para imprimir o buffer na saída padrão.
Ok, vamos formatar uma string.
Criaremos o aplicativo conforme descrevi acima, que imprimirá seu nome e idade de acordo.
A primeira coisa que faremos é informar ao compilador Go que o pacote deve ser compilado como um programa executável. Fazemos isso com a linha:
package main
A seguir, importamos o pacote fmt com:
import "fmt"
Agora, definiremos nossa função com main(), que definirá duas variáveis (nome e idade), formatará a string e depois imprimirá a string. A função fica assim:
func main() { name := "Camille" age := 31 formatted := fmt.Sprintf("Your name is: %s, and you are %d years old", name, age) fmt.Println(formatted) }
O operador := é usado para declarar uma variável, o que é diferente de =, pois é usado para alterar o valor de uma variável.
Pense em := desta forma:
name := Jack
é uma abreviatura para:
var name int name = Jack
Essencialmente := permite declarar e definir uma variável em uma única linha.
Agora que você entende esse conceito, deverá ser capaz de compreender a função acima.
Montamos tudo assim:
package main import "fmt" func main() { name := "Camille" age := 31 formatted := fmt.Sprintf("Your name is %s, and you are %d years old", name, age) fmt.Println(formatted) }
Crie o arquivo com o nome formato.go. Salve e feche o arquivo. Você pode então executar o código com o comando:
go run format.go
A saída será algo assim:
Your name is Camille, and you are 31 years old
Se você quiser compilar isso em um executável, o comando seria:
go build format.go
Há outro truque útil que você pode usar com a impressão de verbos para formatar números. Digamos, por exemplo, que você queira especificar algum preenchimento para espaços em seus números, o que pode ajudar a definir os números ou até mesmo permitir que você imprima coisas em colunas (o que, é claro, requer alguns truques com espaçamento).
Digamos (usando nosso exemplo acima) que você deseja adicionar alguns espaços antes da idade. Ao fazer isso, o número será automaticamente justificado à direita e preenchido com espaços no lado esquerdo. Por exemplo, %6d adicionará 6 espaços à esquerda do número. Essa linha ficaria assim:
formatted := fmt.Sprintf("Your name is %s, and you are %6d years old", name, age)
E se você quisesse formatar essa saída para que o nome ficasse em uma linha e a idade em outra? Para isso, você poderia usar a string de nova linha (n) assim:
formatted := fmt.Sprintf("Your name is %snYou are %d years old", name, age)
A saída disso seria:
Your name is Camille You are 31 years old
Ah, a simplicidade e flexibilidade da formatação de strings Golang. Depois de começar a usar isso, você começará a ver o quão importante é o conceito.
A postagem Uma introdução à formatação de strings em Go apareceu pela primeira vez em The New Stack.