Print vs Println vs Printf. Qual a diferença?
Tags: go, beginners, tutorial
Published: 2020-05-17 20:44:36

**Como vocês estão?** *Espero que estejam bem* 🙂

##Hoje vamos falar um pouco sobre o print e suas variações 

Vocês lembram do print?  Falei sobre a existência dele no post sobre o "hello world", agora vamos entrar em mais detalhes.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/4apsch5wleor4rdwqjqm.jpg)

O `` print`` é uma funcionalidade do package ``fmt`` e já sabemos que ele é responsável por mostrar coisas na tela. A diferença entre ele, o ``println`` e o ``printf`` pode parecer sutil, mas na prática vai fazer muita diferença. 

```golang
frase := "sou básico"
fmt.Print("Eu sou o print e", frase)
```
##Print##
Ele é o básicão, faz exatamente o que se propõe a fazer, **exibir mensagens na tela**. Nada mais, nada menos. 

Notem que podemos colocar textos e as variáveis juntas, separando apenas com virgula.   

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/lor8595avszpgyncfoe6.jpg)

```golang
x := "eu pulo linhas"
fmt.Println("Eu sou o println e", x)
```
##Println##
O ln vem de line. O ``println`` é o único que pula uma linha após mostrar a mensagem. Fica mas legível e organizado. Se quisermos pular linha no ``print`` ou no ``printf``, temos que utilizar o ``\n``: ``fmt.Print("Quero pular uma linha\n")``.

Aqui também podemos juntar textos e variáveis, separando com a virgula. 

```golang
frase := "não tenho nada de básico" 

fmt.Printf("Eu sou o printf e %v", frase)
```
##Printf 

Logo de cara percebemos que estamos usando um negócio novo, **``%v`` é um format verb**. Existem muitos na linguagem, e o ``printf`` permite que utilizemos.

Primeiro devemos saber que esse "v" vem de value, estou querendo mostrar o valor de algo, ou seja, o valor da minha variável. 

Vocês devem estar se perguntando: **Por que usar o format verb?**

A resposta é simples, **no ``printf`` é obrigatório utiliza-lo**. Não podemos simplesmente colocar o nome da variável separado por virgula, como fizemos no ``print`` e no ``println``.  

Devemos colocar o format verb dentro do texto, como se fosse parte do que queremos mostrar ``fmt.Printf("Quero mostrar essa menagem %v")``. Claro que não queremos mostrar um %v na mensagem, não faz sentido, tanto é que se deixarmos assim, o código vai dar erro. Então como fazemos?

Queremos que no lugar do ``%v`` apareça o valor da nossa variável, então temos liga-lo a ela. Isso é simples de fazer.

 ```golang
nome := "Korra"
idade := 17

fmt.Printf("A %v tem %v anos", nome, idade)
```
Percebam que o primeiro ``%v`` deve ser subsistido pela variável nome, já o segundo deve ser subsistido pela variável idade. Para fazer isso basta colocar uma virgula depois da mensagem e chamar as variáveis na ordem correta. Primeiro nome e depois a idade.  
 
Agora que entendemos basicamente como os format verbs funcionam, vamos conhecer mais alguns deles. Eles podem fazer coisas muito legais.

```golang
%v : para valor
%T : para tipo da variável
%d : para números decimais
%b : para números binários 
%#u : para unicode 
%#x : para números hexadecimal 
```
Se vocês quiserem saber mais, a documentação da linguagem tem a lista completa dos format verbs. 👉[aqui](https://golang.org/pkg/fmt/)👈

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/svldic588ghc10n1o6vg.jpg)

**Mais um dia de estudos realizado com sucesso**✔️.

Se você tem interesse em estudar go, deu sorte. Se liga nesse [curso](https://youtu.be/WiGU_ZB-u0w) maravilhoso, produzido por uma [pessoa](https://twitter.com/ellenkorbes) incrível. É por lá que eu estou estudando 👍. 
 
 ![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/gtwgiksiixm49aiyfx9s.jpg)