echo 를 시용해서 서버를 만드는 것을 super easy 하다. main.go 파일을 다음과 같이 수정하자. package main import ( "net/http" "github.com/labstack/echo" ) func main() { e := echo.New() e.GET("/", handleHome) e.Logger.Fatal(e.Start(":1323")) } func handleHome(c echo.Context) error { return c.String(http.StatusOK, "Hello, World!") } 그리고 실행하면 다음과 같이 실행 결과가 출력 되고, 1323 포트를 통해 접속할 수 있다. 정상적으로 실행 되는것을 확인하긴 했지만, myScraper 를 전혀 사용하고..
프로그래밍 언어/Go
이번에는 go echo 서버를 만들어 본다. 본격적으로 만들어보기에 앞서 필요한 사전 작업들을 해보자. 우선 main package 에 있던 main function 을 다른 package 로 만들고, 실행이 아닌 호출 가능한 형태로 변경하려 한다. 우선 myScrap 라는 이름의 폴더를 만들고 그 안에 main.go 파일을 옮긴다. 그리고 main.go 파일의 이름을 myScrap.go 로 이름을 변경한다. myScrap.go 가 된 파일을 열고 1. package 이름 변경 2. main function 이름을 myScrap function 으로 변경 3. 전역변수 baseURL 을 myScrap function 내부로 이동 4. myScrap function 에 string 타입의 변수 term 을..
사실 이 전에 작성한 코드로 URL Checker 구현이 끝났지만 출력하는 부분이 없었다. 앞서 다른 예제에서 goroutine 으로 실행한 결과를 channel 을 통해 수신하도록 '
지금까지 goroutine 에 대해 알아보았으니 'main.go' 파일에 작성했던 URL Checker 를 goroutine 을 사용해서 개선해보자. package main import ( "errors" "fmt" "net/http" ) // channel 을 통해 주고 받을 데이터 타입으로 사용 할 struct 선언 type result struct { url string status string } // 사용자 정의 error var errRequestFailed = errors.New("Request failed") func main() { // url 접속 결과를 담을 비어있는 map 선언 results := make(map[string]string) // channel 생성 c := make(..
이번에는 Channel 로 주고 받는 데이터를 bool 타입이 아닌 string 타입을 사용해보자. 아래는 수정한 main_goroutine.go 파일이다. package main import ( "fmt" "time" ) func main() { // 길이 2 의 문자열 배열 생성 people := [5]string{"nico", "nimkoes", "go", "java", "spring"} // bool 타입을 주고받을 수 있는 channel 생성, c 는 임의의 이름으로 사용 가능 c := make(chan string) // 반복문을 실행 하면서 두 개의 goroutine 을 실행 for _, person := range people { // channel 을 같이 전달 go isSexy(pers..
Channel 은 goroutine 과 main function 사이 또는 goroutine 간 정보 전달을 하기 위한 방법 이다. 앞서 make 가 map 을 만들기 위한 function 이라고 정리 했었는데, make function 은 slice, map 그리고 channel 을 만들 수 있는 function 이 맞는것 같다. 아무튼, 이번에는 channel 이라는 것을 사용해보려 한다. 코드에 대한 설명은 주석에 작성 하였다. package main import ( "fmt" "time" ) func main() { // 길이 2 의 문자열 배열 생성 people := [2]string{"nico", "nimkoes"} // bool 타입을 주고받을 수 있는 channel 생성, c 는 임의의 이..
Go 에는 멀티스레드를 생성해서 실행하는게 정말 간단한 것 같다. 예를 들어 Java 같은 경우 Runnable 인터페이스를 구현 한다던가 하는 작업이 필요하고, 그렇게 하려다보면 장황한 코드가 작성 되기도 한다. 물론 람다식을 쓰면 좀 나아지겠지만 말이다. 다른 실행 프로그램과 구분하기 위해 main_goroutine.go 파일을 새롭게 작성 했다. 그리고 1초 간격으로 문자열을 출력하는 반복문을 가진 sexyCount 라는 function 을 작성했다. package main import ( "fmt" "time" ) func main() { sexyCount("nico") sexyCount("nimkoes") } func sexyCount(person string) { for i := 0; i < ..