Language/Go
Go - URL Checker 하나 씩 순차적
bright jazz music
2021. 2. 19. 23:25
package main
import (
"errors"
"fmt"
"net/http"
)
var errRequestFailed = errors.New("Request failed")
var results = make(map[string]string)
//func 안이 아니라서 results := map[string]string{} 형식을 쓸 수 없다
// results 라는 이름의 맵 생성과 초기화
// = var results = map[string]string{}
//이런 방식으로 맵을 초기화하지 않으면 값이 nil이 돼 버린다.
func main() {
urls := []string{ //urls라는 이름의 string 타입 배열 생성
"https://airbnb.com",
"https://amazon.com",
"https://reddit.com",
"https://google.com",
"https://soundcloud.com",
"https://facebook.com",
"https://instagram.com",
"https://academy.nomadcoders.co/",
}
for _, url := range urls {
result := "OK"
err := hitURL(url)
if err != nil {
result = "FAILED"
}
results[url] = result
}
for url, result := range results {
fmt.Println(url, result)
}
}
func hitURL(url string) error {
fmt.Println("Checking:", url)
resp, err := http.Get(url)
if err != nil || resp.StatusCode >= 400 {
fmt.Println(err, resp.StatusCode) //resp.Status하면 이유를 출력함
return errRequestFailed
}
return nil
}