Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Terminal não trava

Olá, eu fiz o main.go e quando eu tento executar o go run main.go o terminal não trava.

package main

import (
    "html/template"
    "net/http"
)

var temp = template.Must(template.ParseGlob("templates/*.html"))

func main() {
    http.HandleFunc("/", index)
    http.ListenAndServe(":8000", nil)
}

func index(w http.ResponseWriter, r *http.Request) {
    temp.ExecuteTemplate(w, "index", nil)
}
2 respostas
solução!

Fala, Victor! Pelo que você falou, parece que o terminal "não trava" porque o servidor tá rodando certinho, mas pode estar faltando algum teste pra confirmar isso. Vou te explicar direitinho.

Quando você roda go run main.go, o terminal fica esperando conexões porque o servidor subiu na porta 8000, como você configurou. Isso é normal, o terminal não vai mostrar nada enquanto você não acessar o servidor.

Como testar se tá funcionando?

  1. Abre o navegador ou uma ferramenta tipo Postman.
  2. Digita http://localhost:8000 e dá Enter.
  3. Se tudo tiver certo, o servidor deve responder (ou dar um erro se o arquivo index.html não existir).

Os templates estão na pasta certa? Verifica se tem uma pasta chamada templates no mesmo lugar onde tá o arquivo main.go. Dentro dela, precisa ter o arquivo index.html.

Porta ocupada? Às vezes, a porta 8000 pode estar sendo usada por outro programa. Tenta trocar pra outra, tipo a 8080:

http.ListenAndServe(":8080", nil)

Adiciona esse print no seu main pra mostrar uma mensagem no terminal:

func main() {
    http.HandleFunc("/", index)
    println("Servidor rodando em http://localhost:8000")
    http.ListenAndServe(":8000", nil)
}

Assim, dá pra saber que tá tudo funcionando enquanto o terminal espera conexões.

Eu tive que mudar a roda do servidor para http://localhost:1002 e assim ele funcionou.