1. Entrada e saída de dados
  2. Entender Println
  3. Exemplos com especificador
  4. Entender Printf
  5. Entender Scanf
  6. Exemplos com especificador
  7. Formatação int, float e outros
  8. Alinhamento

A forma de interagir com o usuário de nossos programas, é feita por intermédio das funções/métodos básicos de entrada e saída de dados com as quais podemos ler dados digitados e exibi-los após algum tipo de processamento. Para isso, a linguagem Go fornece o package fmt, para nos auxiliar.

Para entender mais sobre funções visite Funções.

O assunto interface em Go pode ser visto em em Interface.

Para ver uma pouco mais sobre formatação, visite Interpolação.

A função Println(Print Line) é utilizada para imprimir informações na saída padrão(tela) sem a possibilidade de formatação. Além disso, essa função sempre irá imprimir uma nova linha logo após a impressão do valor informado e também "espaço em branco", por padrão, entre os dados impressos.

Sintaxe
func Println(a ...interface{}) (n int, err error)
Onde
n: número de caracteres lidos
err: erro ocorrido durante a leitura
a: recebe todos as variáveis para impressão
Exemplo 2
package main
import "fmt"

func main() {
	var vl_float float32 = 1.99
	var vl_int int = 777
	var vl_char byte = 'Z'
	var vl_str string = "string"

	fmt.Println(vl_float, vl_int, vl_char, vl_str)
}
Saída
1.99 777 90 string

A função Printf(Print Formatter) permite que possamos utilizar identificadores de formatação para exibir dados de acordo com os formatos aceitos pela linguagem. Essa função não imprime uma nova linha após a impressão do argumento informado.

Sintaxe
func Printf(format string, a ...interface{}) (n int, err error)
Onde
n: número de caracteres lidos
err: erro ocorrido durante a leitura
format: string contendo especificador de formatação de tido de dado
a: lista de variáveis para impressão
Exemplo 3
package main
import "fmt"

func main() {
	var vl_float float32 = 1.99
	var vl_int int = 777
	var vl_char byte = 'Z'
	var vl_str string = "string"

	fmt.Printf("%f %d %c %s", vl_float, vl_int, vl_char, vl_str)
}
Saída
1.990000 777 Z string

No exemplo acima, a formatação de dados utilizou apenas alguns especificadores básicos de formatação. Abaixo, uma lista mais completa dos especificadores suportados pela linguagem Go:

Tab. 2: Especificadores de saída
Especificador Tipo de dado
%d int sinalizado
%f ponto flutuante
%c caracter
%e -
%o octal
%x ou %X hexadecimal
%t booleano
%T tipo de dado
%s string
%p ponteiro
%v {valores struct}
%+v {membro: valor}
%#v representação da struct
%#x 0x + valor hexadecimal
#+d inteiro com sinal -/+
%q valor entre aspas duplas

Para recuperarmos a informação digitada pelo usuário do nosso programa, utilizamos a função Scanf. Esse método recebe variáveis como argumento e que são utilizadas para armazenar essas informações.

Sintaxe
func Scanf(format string, a ...interface{}) (n int, err error)
Onde
n: número de caracteres lidos
err: erro ocorrido durante a leitura
format: string contendo especificador de formatação de entrada
a: as variáveis para armazenar os dados lidos

As variáveis utilizadas para armazenar os valores lidos pelo método Scanf devem ser precedidas do operador (&) que informa que estamos passando uma referência para o método.

Exemplo 4
package main
import "fmt"

func main() {
	var vl_float float32
	var vl_int int
	var vl_char byte

	fmt.Scanf("%f", &vl_float)
	fmt.Scanf("%d", &vl_int)
	fmt.Scanf("%c", &vl_char)

	fmt.Printf("%f %d %c",vl_float,vl_int,vl_char)
}
Entrada
1.99
7777
Z
Saída
1.99
7777
Z
1.99 7777 Z

No exemplo acima, utilizamos alguns especificadores de formatação que podem ser vistos pelo uso do %. Abaixo uma tabela contendo os especificadores mais básicos e seus usos.

Tab. 1: Especificadores de entrada
Especificador Tipo de dado
%s string
%d int
%f float
%c byte
%u uint
  1. 16/09/2024 - revisão 2 - Ajustes gramaticais; adição de entrada em Ex. 4
  2. 02/10/2023 - revisão 1 - Correção em referências, erros gramaticais e sintaxe
  3. 21/08/2023 - versão inicial