Saída do Código.
Este programa está na versão --> 1.1
1 - Iniciar motinoramento
2 - Exibir Logs
0 - Sair do Programa
1
Monitorando...
Teste nº--> 0 Site: https://www.alura.com.br/
Status: --> Site no AR! https://www.alura.com.br/
Teste nº--> 1 Site: https://wwww.random-status-code.herokuapp.com
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x10 pc=0x1248fee]
goroutine 1 [running]:
main.testaSite(0x12d9f29, 0x2d)
/Users/gabrielgardani/go/src/hello/hello.go:88 +0x5e
main.monitorarSite()
/Users/gabrielgardani/go/src/hello/hello.go:79 +0x1c6
main.main()
/Users/gabrielgardani/go/src/hello/hello.go:32 +0x17f
exit status 2
Meu Código:
package main
import (
"fmt"
"net/http"
"os"
)
func main() {
boasVindas()
for {
exibeMenu()
comando := lerComando()
switch comando {
case 1:
fmt.Println("Monitorando...")
monitorarSite()
case 2:
fmt.Println("Exibindo logs...")
case 0:
fmt.Println("saindo do programa")
os.Exit(0) // encerra o programa
default:
fmt.Println("Comando desconhecido")
os.Exit(-1) // informa um erro no sistema
}
}
}
func boasVindas() {
nome := "Gabriel"
versao := 1.1
fmt.Println("Bem vindo ", nome)
fmt.Println("Este programa está na versão -->", versao)
}
func exibeMenu() {
fmt.Println("1 - Iniciar motinoramento")
fmt.Println("2 - Exibir Logs")
fmt.Println("0 - Sair do Programa")
}
func lerComando() int {
var comandoLido int
fmt.Scan(&comandoLido)
return comandoLido
}
func monitorarSite() {
sites := []string{"https://www.alura.com.br/", "https://wwww.random-status-code.herokuapp.com",
"https://wwww.alura.com.br"}
for i, site := range sites {
fmt.Println("Teste nº-->", i, "Site: ", site)
testaSite(site)
}
}
func testaSite(site string) {
resp, _ := http.Get(site)
if resp.StatusCode == 200 {
fmt.Println("Status: --> Site no AR!")
} else {
fmt.Println("Status: fora do ar, código de erro -->", resp.StatusCode)
}
}