Meu primeiro hello world em Go
Tags: beginners, go, programming
Published: 2020-05-15 20:35:30


```golang
package main

import (
    "fmt"
)

func main {
    fmt.Println("Hello World!")
}
```
##Por hoje é isto, obrigada por vir.
*Brincadeira* 🙃

Se você não entendeu o código acima, não se desespere. Hoje a minha missão é te explicar parte por parte dele. Vamos lá...

```golang
package main
```
###**1°: O que é esse tal de package main?**###

Bem, primeiro você tem que entender que **o go trabalha com pacotes**📦, esse tal de package. **Cada pacote tem suas funcionalidades** e se eu quero utilizar uma delas, vou ter que chamar esse pacote primeiro e só depois vou poder usar a funcionalidade dele.  

Alguns pacotes são padrões da linguagem, mas eu também posso criar meus próprios packages de acordo com o meu protejo. Nem me pergunte como, porque eu ainda não sei 😛. Mas um desses pacotes deve ser o principal, main quer dizer principal. O **``package main`` é o pacote principal e só ele irá gerar um arquivo executável**.

*Executável é o arquivo que a gente vai rodar e assim a magia do código irá acontecer.*

Então o ``package main`` indica que este arquivo, este código, será o principal. É ele que gerará nosso programa. Agora não parece tão importante, mas no futuro será, então não esqueçam dele.

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

```golang
import(
    "fmt"
)
```
###**2°: "fmt" que negócio estranho é esse?**###

Lembra daquela história de pacotes? Olha eles ai de novo!

Eu falei que existem pacotes que são padrões da linguagem, que cada um dos pacotes tem suas funcionalidades e que para utiliza-las precisamos chamar o pacote primeiro.

É exatamente isso que essa parte do código faz. O ``import`` é responsável por "chamar" os pacotes, ele esta importando.

**Ta certo, entendi o que o ``import`` faz, mas o que é ``fmt``?**

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

Jovem, acalma teu coração 💓 

**``fmt``** é nada mais, nada menos que ... um **package** 📦. É isso ai, ``fmt`` é um pacote padrão da linguagem que contem diversas funcionalidades, como: **mostrar coisas na tela**. E é exatamente isso que queremos, precisamos mostrar uma mensagem na tela, por isso vamos importa-lo.

As coisas já estão começando a fazer sentido, falta pouco agora.

```golang
func main() {
    
}
```

###**3°: Func main**###

Um código contém funções, pode conter várias delas, mas sempre vamos precisar de uma principal. Já sabemos que main quer dizer principal, então **``func main`` deve ser a função principal**, certo? EXATAMENTE ISSO.  

**Tudo que está dentro da função principal será executado quando colocarmos nosso código para rodar**. Se existir algo fora dela e não tiver nenhuma ligação com a ``func main``, será ignorado. 

Como queremos que nossa mensagem apareça, temos que coloca-la dentro da ``func main``, caso contrário, ela será ignorada.

Por fim, mas não menos importante...

```golang
fmt.Println()
```

###**4°: Println, parece até um xingamento 🤬**###
Mas calma que não é...

*Eu já falei tanto sobre pacotes que estou parecendo um papagaio, mas é a ultima vez* 🤞.

Já estamos cansados de saber que ``fmt`` é um package, também sabemos que cada package tem sua funcionalidade e que para utilizar essa funcionalidade precisamos importar o pacote primeiro.

Já importamos o pacote ``fmt``, agora queremos utilizar a função de mostrar coisas na tela. **Para usar a função que pertence a um pacote, utilizamos a seguinte fórmula**, anota ai...

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

 **✨pacote.NomeDaFuncionalidade✨**. Um detalhe importante, a primeira letra depois do ponto fica sempre maiúscula. 

**O nome do pacote é ``fmt``** e a **funcionalidade que queremos chamar é ``print``**. Para ficar mais fácil de lembrar, eu penso que quero "imprimir" algo na tela. *Não sem se faz sentido* 🤔*, mas me ajuda*. 

Juntando tudo fica ``fmt.Println``. O **"ln" do final vem de "line", ele pula uma linha no final da mensagem**, eu acho que fica mais organizado. *Existem algumas variações, mas são detalhe que vamos aprendendo aos poucos*.

Por fim, temos que colocar a mensagem, até agora não falamos o que queremos mostrar. Queremos dar um "hello world", então é isso que vamos escrever: ``fmt.Println("hello world")`` 

Agora juntamos tudo e ... 

```golang
package main

import (
    "fmt"
)

func main {
    fmt.Println("Hello World!")
}
```

Voilá, nosso primeiro Hello world em Go.

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

**Lembrando que estou aprendendo e documentando minha evolução**. Estou acompanhando um curso maravilhoso feito por  Ellen Körbes, está disponível [aqui](https://www.youtube.com/channel/UCxD5EE0H7qOhRr0tIVsOZPQ).