DEV Community

Júlio Oliveira
Júlio Oliveira

Posted on

GO - Criando um Hello-world

Recentemente recebi uma tarefa que precisava trabalhar em GO(GoLang), mais precisamente com módulos. Como precisava fazer algo simples e bem iniciante. Resolvi iniciar um novo projeto para então seguir para os módulos, pois o projeto em que trabalhei antes já estava bem avançado.

Iniciando um novo projeto

Optei por usar o terminal nessa fase inicial, por comodidade de chegar até a pasta onde colocaria o projeto. Naveguei até pasta que colocaria o projeto (cd caminho) e para então usar o mkdir (mkdir proj-teste). Até aqui acredito que nada fora do padrão em um novo projeto.
Agora, pelo VS Code criei o arquivo hello.go onde coloquei o seguinte código:

package projteste

func hello(name string) string {
    return "Hello " + name
}
Enter fullscreen mode Exit fullscreen mode

Minhas intenções são bem claras no arquivo:

  • O pacote com seu devido nome;
  • A função hello que recebe uma string chamada name e retorna Hello + a string, quis dar um passo inicial maior.

Eu já sabia que para escrever em tela precisava de um import, então fui no projeto que já estava feito e copiei o nome de lá, ficando assim:

package projteste

import (
    "fmt"
)

func hello(name string) string {
    return "Hello " + name
}
Enter fullscreen mode Exit fullscreen mode

De imediato meu VSCode reclamou do import, ignorei e salvei o arquivo. O VSCode simplesmente apagou as linhas do import. Reescrevi as linhas e senti falta do básico "como vou chamar isso?", então senti falta do básico main(). O código acabou ficando assim:

package projteste

import (
    "fmt"
)

func main() {
    fmt.Println(hello("julio"))
}

func hello(name string) string {
    return "Hello " + name
}

Enter fullscreen mode Exit fullscreen mode

Resolvendo os erros

Agora sim! Consegui salvar sem a IDE apagar meu código ou reclamar de algo. Fui no terminal rodar o go run hello.go, para então receber na cara um package command-line-arguments is not a main package, foi aqui que desandei por desatenção. Li a mensagem de forma superficial e fui analisar meu código atrás da causa. Adicionei um fmt.Println("hello()") no main, logo abaixo do primeiro print. Rodei de novo e... quebrou. Como já estava no final do expediente e não consegui, deixei pro meu "eu do futuro" resolver hoje.

E lá vamos nós (de novo)! Tentei rodar novamente hoje, já sabendo que quebraria, porém queria rever a mensagem. Dafuq!? Eu já tinha o main na classe o que mais esse infeliz quer? Reli a mensagem com mais atenção e me veio o estalo "ele tá reclamando da falta de um pacote main" e o meu pacote atualmente se chama projteste, vamos tentar alterar isso. O inicio do código ficou assim:

package main

// ...
Enter fullscreen mode Exit fullscreen mode

Rodei o go run hello.go no terminal e na minha tela tinha o "hello()" finalmente! Troquei as linhas comentadas no main e tive um "Hello julio".

No final, meu código ficou assim:

package main

import (
    "fmt"
)

func main() {
    fmt.Println(hello("julio"))
}

func hello(name string) string {
    return "Hello " + name
}
Enter fullscreen mode Exit fullscreen mode

Enfim, temos um hello world rodando! Hora de passar pros módulos.

Lição aprendida

Leia e bendita mensagem de erro! Leia-a com atenção, ela é sua amiga! O eu do passado poderia ter resolvido isso ontem se tivesse dado devida atenção as mensagens.

Top comments (0)