package main
import (
"fmt"
"net/http"
"os"
)
func main() {
exibeIntroducao()
for {
menuDeOpcoes()
comando := leComando()
switch comando {
case 1:
iniciarMonitoramento()
case 2:
fmt.Println("Exibendo Logs do Sistema ...")
case 0:
fmt.Println("Sessão encerrada.")
os.Exit(0)
default:
fmt.Println("Comando não é reconhecido pelo sistema")
os.Exit(-1)
}
}
}
func exibeIntroducao() {
nome := "Márcio Xavier Ramos"
versao := 1.1
fmt.Println("Olá Sr.", nome)
fmt.Println("Versão do Programa:", versao)
}
func menuDeOpcoes() {
fmt.Println("O que você quer fazer?")
fmt.Println("1- Iniciar Monitoramento.")
fmt.Println("2- Exibir Logs.")
fmt.Println("0- Sair")
}
func leComando() int {
var comando int
_, err := fmt.Scanf("%d", &comando)
if err != nil {
fmt.Println("Erro ao ler comando. Por favor, insira um número válido.")
os.Exit(1)
}
return comando
}
func iniciarMonitoramento() {
fmt.Println("Monitorando ...")
site := "https://roadmap.sh/golang"
resp, err := http.Get(site)
if err != nil {
fmt.Println("Erro ao retornar o site", err)
os.Exit(1)
}
defer resp.Body.Close()
if resp.StatusCode == 200 {
fmt.Println("O site", site, "foi carregado corretamente")
} else {
fmt.Println("O site", site, "retornou", resp.StatusCode)
}
}
Quando uso o (for) ele nesta versão do exercício ela não da o lupe como esperado, mas retorna a mensagem da função iniciarMonitoramento, resolvi o problema, mas gostaria de saber por que isso acontece: A mensegem que ele retorna esta é esta.
if err != nil {
fmt.Println("Erro ao retornar o site", err)
os.Exit(1)
}
desta parte do código que esta dentro da função iniciarMonitoramento e o loop não processe, o programa é encerrado. mas quando não uso o (for ) o programa segue como esperado.