![OVHcloud permite a gestão de clusters Kubernetes em escala](https://optimuscloud.com.br/wp-content/uploads/2024/03/OVHcloud-permite-a-gestao-de-clusters-Kubernetes-em-escala-150x150.jpg)
OVHcloud permite a gestão de clusters Kubernetes em escala
19 de março de 2024![Uma jornada de código aberto para ambientes nativos de nuvem mais ecológicos](https://optimuscloud.com.br/wp-content/uploads/2024/03/1710945240_Uma-jornada-de-codigo-aberto-para-ambientes-nativos-de-nuvem-150x150.jpg)
Uma 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.