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
}
Minhas intenções são bem claras no arquivo:
- O pacote com seu devido nome;
- A função
hello
que recebe umastring
chamadaname
e retornaHello
+ 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
}
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
}
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
// ...
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
}
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)