본문 바로가기

GO lang

(26)
[GO] Decorator 패턴 decorator 패턴을 이용한 샘플코드, 함수를 추가 제거가 쉽다. 유지보수가 편하다. main.go 1. 암호화 > 압축 > 압축해제 > 복호화 2. 압축 > 압축해제 구현 부분에서 간단한 코드 변경만으로 암호화/복호화 부분을 추가하거나 제거하기가 쉬워진다. package main import ( "github.com/tuckersGo/goWeb/web9/lzw" "github.com/tuckersGo/goWeb/web9/cipher" "fmt" ) var sentData string var recvData string type Component interface { Operator(string) } type SendComponent struct{} func (self *SendComponent) O..
[GO] Web - Restful API, TDD 패키지 설치 위치 - 본인의 프로젝트 폴더에서 실행. 패키지 설치 방법 1. go get -u github.com/gorilla/mux D:\workspace\GO\tuckersGo\goWeb\web05>go get -u github.com/gorilla/mux go: downloading github.com/gorilla/mux v1.8.0 go get: added github.com/gorilla/mux v1.8.0 환경 설정은 아래와 같이 설정함. PS D:\workspace\GO\tuckersGo\goWeb> cd .\web05\ PS D:\workspace\GO\tuckersGo\goWeb\web05> go mod init GO/tuckersGo/goWeb/web05 go: creating ne..
[GO] Web - 테스트 코드 작성방법(TDD) 기존에 작업한 "Web - Text, json, URL 쿼리 방식" 코드에 대한 테스트 코드입니다. 테스트 코드를 작성하기 전에 2개의 패키지를 설치해야 함. 설치 위치 - 본인의 프로젝트 폴더에서 실행. 설치방법 1. go get github.com/smartystreets/goconvey 2. 환경변수 path에 추가 ===> "%GOPATH%\bin" 3. go get github.com/stretchr/testify/assert ./myapp/app_test.go - 5가지의 테스트 경우를 점검함. package myapp import ( "encoding/json" "github.com/stretchr/testify/assert" "io/ioutil" "net/http" "net/http/htt..
[GO] Web - Text, json, URL 쿼리 방식 간단한 golang 으로 만든 웹페이지 입니다. 프로젝트 폴더위치 및 패키지 위치에 따른 오류는 본인의 환경에 맞게 수정이 필요함. ./main.go package main import ( "GO/tuckersGo/goWeb/web04/myapp" // 개인 패키지 위치이므로 본인에 맞게 수정할것 "net/http" ) const portNumber = ":3000" func main() { mux := myapp.NewHttpHandler() http.ListenAndServe(portNumber, mux) } ./myapp/app.go package myapp import ( "encoding/json" "fmt" "net/http" "time" ) type User struct { FirstName..
[GO] Scrapping(2) - Echo server 간단하게 echo 서버를 이용한 샘플입니다. Scrapping 관련 마무리 샘플입니다. echo 패키지 설치 D:\workspace\GO\nomad>go get github.com/labstack/echo go: downloading github.com/labstack/echo v1.4.4 go: downloading github.com/labstack/echo v3.3.10+incompatible go: downloading github.com/labstack/gommon v0.3.0 go: downloading golang.org/x/crypto v0.0.0-20210921155107-089bfa567519 go: downloading github.com/mattn/go-colorable v0.1.2..
[GO] Scrapping(1) - URL checker 샘플 사이트를 접속하여 상태 정보 및 응답 코드를 가져오는 샘플코드임. - 고루틴, 자료구조는 map{string, slice} 구조를 사용함, key:url, value:status, errCode // URL checker package main import ( "fmt" "net/http" "strconv" ) type requestResult struct { url string status string errCode int } func main() { ch := make(chan requestResult) // var results = make(map[string]string) // value를 string 으로 처리한경우 var results = make(map[string][]string) /..
[GO] channel 고루틴 결과를 공유하는 방법 - 채널 - 메인함수에서 Wait() 호출을 하지 않아도 채널을 읽으려고 하면 자동으로 wait 상태로 기다림. // channel package main import ( "fmt" "time" ) func main() { c := make(chan bool) people := [2]string{"AAA", "BB "} for _, person := range people { go isSexy(person, c) } // time.Sleep(time.Second*5) // sleep 함수를 사용하지 않아도 됨. fmt.Println("get from channel:",
[GO] 고루틴 오늘은 고루틴에 대해서 간단하게 정리합니다. 고루틴은 개념은 아주 심플합니다. 고루틴으로 처리하면 6초정도 걸릴 실행시간이 순차적으로 처리할 경우 11초 정도로 늘어납니다. package main import ( "fmt" "sync" "time" ) var wg sync.WaitGroup func main() { go sexyCount("AAA") fmt.Println("******************") go sexyCount("BBB ") wg.Add(2) wg.Wait() } func sexyCount(person string) { for i := 0; i < 5; i++ { fmt.Println(person, "is sexy", i) time.Sleep(time.Millisecond * 100..