Formatação de Strings
Agora que aprendemos sobre todos os tipos de dados básicos, podemos explorar a formatação de strings. Em programação, formatação de strings envolve incorporar valores de variáveis em strings.
Nota
A instrução
importé utilizada para importar pacotes em uma aplicação Go. Um pacote é uma coleção de arquivos-fonte Go relacionados que colaboram para oferecer um conjunto de funcionalidades ou serviços. O pacotefmtfornece funções que permitem formatar strings.
Uma das funções do pacote fmt que temos utilizado é a função Println. A função Println exibe o texto de saída em uma nova linha a cada vez. No entanto, existe uma função chamada Print que exibe a saída sem pular para uma nova linha:
index.go
12345678package main import "fmt" func main() { fmt.Print("1") fmt.Print(" 2") fmt.Print(" 3") }
De modo geral, podemos utilizar essas funções para inserir valores de variáveis em dados do tipo string utilizando o seguinte método:
index.go
123456789package main import "fmt" func main() { var n int = 5 var in int = n / 2 var out int = n - in fmt.Println("There are", n, "cats,", in, "of them are inside the house while", out, "are outside.") }
No entanto, esse método não é muito eficiente, pois é necessário dividir a string em vários segmentos para inserir variáveis nos locais relevantes, o que pode se tornar trabalhoso em casos mais complexos. A função Printf resolve esse problema e simplifica o processo de exibição de saída formatada.
A função Printf recebe uma string de formato como seu primeiro argumento, seguida pelos valores (ou variáveis) a serem inseridos na string de formato. Uma string de formato contém marcadores de posição (especificadores de formato) que definem o formato desejado da saída.
A seguir está um exemplo:
index.go
12345678910package main import "fmt" func main() { var n int = 5 var in int = n / 2 var out int = n - in fmt.Printf("There are %d cats, %d of them are inside the house with %d of them are outside. ", n, in, out) }
Conforme ilustrado pelo exemplo, Especificadores de Formato são símbolos que servem como marcadores de posição para tipos de dados específicos dentro de uma string. Existe um especificador de formato distinto para cada tipo de dado. A tabela abaixo fornece uma lista dos especificadores de formato básicos:
| Especificador de Formato | Tipo de Dado |
|---|---|
%d | Integer |
%s | String |
%f | Float |
%t | Boolean |
%c | Character (or Rune) |
As variáveis substituem os respectivos marcadores de posição na string de formato. Na saída do exemplo acima, o primeiro %d é substituído pelo valor de n. Da mesma forma, o segundo é substituído pela variável correspondente, que é in, e o último %d é substituído pelo valor de out.
Também é possível formatar uma string e armazená-la em uma variável do tipo string utilizando a função Sprintf, que formata uma string e retorna o resultado para armazenamento ou uso posterior, ao invés de exibi-la imediatamente na tela:
index.go
123456789101112package main import "fmt" func main() { var n int = 5 var in int = n / 2 var out int = n - in var text string = fmt.Sprintf("There are %d cats, %d of them are inside the house with %d of them are outside. ", n, in, out) fmt.Println("Text:", text) }
Aqui está um exemplo mais complexo que incorpora vários conceitos abordados anteriormente em um único programa. Será um exercício valioso revisar o programa a seguir e sua saída para aprimorar suas habilidades de leitura de código:
index.go
12345678910package main import "fmt" func main() { var numA float32 = 17.7 var numB int = 10 var str string = fmt.Sprintf("It is %t that 'a' is bigger than 'b'.", numA > float32(numB)) fmt.Printf("The numbers 'a' and 'b' are %f and %d. %s", numA, numB, str) }
Em alguns casos, o compilador realiza conversão implícita de tipo para corresponder valores aos especificadores de formato, conforme demonstrado no exemplo a seguir:
index.go
1234567package main import "fmt" func main() { var char rune = 'A' fmt.Printf("The Unicode decimal value of %c is %d", char, char) }
O rune 'char' é exibido tanto como caractere quanto como valor numérico. No entanto, em alguns casos, o compilador pode gerar um erro. Por exemplo, o código a seguir resultará em uma saída inválida porque um 'float' não pode ser convertido implicitamente em um 'int':
index.go
12var value float32 = 5.7 fmt.Printf("%d", value)
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Can you explain more about how to use different format specifiers?
What happens if I use the wrong format specifier for a variable?
Can you show more examples of string formatting in Go?
Awesome!
Completion rate improved to 1.96
Formatação de Strings
Deslize para mostrar o menu
Agora que aprendemos sobre todos os tipos de dados básicos, podemos explorar a formatação de strings. Em programação, formatação de strings envolve incorporar valores de variáveis em strings.
Nota
A instrução
importé utilizada para importar pacotes em uma aplicação Go. Um pacote é uma coleção de arquivos-fonte Go relacionados que colaboram para oferecer um conjunto de funcionalidades ou serviços. O pacotefmtfornece funções que permitem formatar strings.
Uma das funções do pacote fmt que temos utilizado é a função Println. A função Println exibe o texto de saída em uma nova linha a cada vez. No entanto, existe uma função chamada Print que exibe a saída sem pular para uma nova linha:
index.go
12345678package main import "fmt" func main() { fmt.Print("1") fmt.Print(" 2") fmt.Print(" 3") }
De modo geral, podemos utilizar essas funções para inserir valores de variáveis em dados do tipo string utilizando o seguinte método:
index.go
123456789package main import "fmt" func main() { var n int = 5 var in int = n / 2 var out int = n - in fmt.Println("There are", n, "cats,", in, "of them are inside the house while", out, "are outside.") }
No entanto, esse método não é muito eficiente, pois é necessário dividir a string em vários segmentos para inserir variáveis nos locais relevantes, o que pode se tornar trabalhoso em casos mais complexos. A função Printf resolve esse problema e simplifica o processo de exibição de saída formatada.
A função Printf recebe uma string de formato como seu primeiro argumento, seguida pelos valores (ou variáveis) a serem inseridos na string de formato. Uma string de formato contém marcadores de posição (especificadores de formato) que definem o formato desejado da saída.
A seguir está um exemplo:
index.go
12345678910package main import "fmt" func main() { var n int = 5 var in int = n / 2 var out int = n - in fmt.Printf("There are %d cats, %d of them are inside the house with %d of them are outside. ", n, in, out) }
Conforme ilustrado pelo exemplo, Especificadores de Formato são símbolos que servem como marcadores de posição para tipos de dados específicos dentro de uma string. Existe um especificador de formato distinto para cada tipo de dado. A tabela abaixo fornece uma lista dos especificadores de formato básicos:
| Especificador de Formato | Tipo de Dado |
|---|---|
%d | Integer |
%s | String |
%f | Float |
%t | Boolean |
%c | Character (or Rune) |
As variáveis substituem os respectivos marcadores de posição na string de formato. Na saída do exemplo acima, o primeiro %d é substituído pelo valor de n. Da mesma forma, o segundo é substituído pela variável correspondente, que é in, e o último %d é substituído pelo valor de out.
Também é possível formatar uma string e armazená-la em uma variável do tipo string utilizando a função Sprintf, que formata uma string e retorna o resultado para armazenamento ou uso posterior, ao invés de exibi-la imediatamente na tela:
index.go
123456789101112package main import "fmt" func main() { var n int = 5 var in int = n / 2 var out int = n - in var text string = fmt.Sprintf("There are %d cats, %d of them are inside the house with %d of them are outside. ", n, in, out) fmt.Println("Text:", text) }
Aqui está um exemplo mais complexo que incorpora vários conceitos abordados anteriormente em um único programa. Será um exercício valioso revisar o programa a seguir e sua saída para aprimorar suas habilidades de leitura de código:
index.go
12345678910package main import "fmt" func main() { var numA float32 = 17.7 var numB int = 10 var str string = fmt.Sprintf("It is %t that 'a' is bigger than 'b'.", numA > float32(numB)) fmt.Printf("The numbers 'a' and 'b' are %f and %d. %s", numA, numB, str) }
Em alguns casos, o compilador realiza conversão implícita de tipo para corresponder valores aos especificadores de formato, conforme demonstrado no exemplo a seguir:
index.go
1234567package main import "fmt" func main() { var char rune = 'A' fmt.Printf("The Unicode decimal value of %c is %d", char, char) }
O rune 'char' é exibido tanto como caractere quanto como valor numérico. No entanto, em alguns casos, o compilador pode gerar um erro. Por exemplo, o código a seguir resultará em uma saída inválida porque um 'float' não pode ser convertido implicitamente em um 'int':
index.go
12var value float32 = 5.7 fmt.Printf("%d", value)
Obrigado pelo seu feedback!