Boa noite ! Ao tentar monitorar os sites com slice estou recendo a seguinte mensagem de erro:
[signal SIGSEGV: segmentation violation code=0x1 addr=0x10 pc=0x608112]
O comando escolhiodo foi: 1
Monitorando...
Testando site 0 : https://random-status-code.herokuapp.com/
O site https://random-status-code.herokuapp.com/ está com problemas : / -- Status Code: 500
Testando site 1 : https://www.caelum.com.br
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x10 pc=0x608112]
goroutine 1 [running]:
main.testaSite(0x692b3e, 0x19)
/home/jorge-augusto-pinto/Documentos/cursos/golang/go/src/hello/hello.go:77 +0x52
main.iniciarMonitoramento()
/home/jorge-augusto-pinto/Documentos/cursos/golang/go/src/hello/hello.go:70 +0x1cc
main.main()
/home/jorge-augusto-pinto/Documentos/cursos/golang/go/src/hello/hello.go:21 +0xe6
exit status 2
Eis o meu fonte:
package main
import (
"fmt"
"net/http"
"os"
)
func main() {
exibeIntroducao()
for {
exibeMenu()
comando := leComando()
switch comando {
case 1:
iniciarMonitoramento()
case 2:
fmt.Println("Exibindo logs...")
case 0:
fmt.Println("Saindo do programa...")
os.Exit(0)
default:
fmt.Println("Não conheço este comando !!!")
os.Exit(-1)
}
}
}
func exibeIntroducao() {
nome := "Jorge"
versao := 1.1
fmt.Println("Olá Sr. ", nome)
fmt.Println("Este programa está na versão: ", versao)
}
func leComando() int {
var comandoLido int
// fmt.Scanf("%d", &comando)
fmt.Scan(&comandoLido)
// fmt.Println("O endereço da variável comando na memória é: ", &comando)
fmt.Println("O comando escolhiodo foi: ", comandoLido)
return comandoLido
}
func exibeMenu() {
fmt.Println("1 - Iniciar Monitoramento")
fmt.Println("2 - Exibir Logs")
fmt.Println("0 - Sair do Programa")
}
func iniciarMonitoramento() {
fmt.Println("Monitorando...")
sites := []string{"https://random-status-code.herokuapp.com/",
"https://www.caelum.com.br",
"https://www.alura.com.br"}
for i, site := range sites {
fmt.Println("Testando site ", i, " : ", site)
testaSite(site)
}
}
func testaSite(site string) {
resp, _ := http.Get(site)
if resp.StatusCode == 200 {
fmt.Println("O site ", site, " foi carregado com sucesso ! :D\n")
} else {
fmt.Println("O site ", site, " está com problemas : / -- Status Code: ", resp.StatusCode, "\n")
}
}