목록언어/Go 언어 (14)
yoongrammer
목차 [Go] go get 알아보기 go get 명령어는 패키지 및 관련 종속성(dependency)을 다운로드 및 설치하는 명령어입니다. 패키지는 $GOPATH/src/ 경로에 저장됩니다. Usage: go get [-d] [-f] [-t] [-u] [-v] [-fix] [-insecure] [build flags] [packages] -d : 설치는 하지 않고 소스 파일만 다운로드합니다. -u : 패키지 및 해당 종속성을 업데이트합니다. -t : 패키지에 대한 테스트를 빌드하는 데 필요한 패키지도 다운로드합니다. -v : 진행 및 디버그 출력 자세한 옵션 설명은 go help get을 통해 확인할 수 있습니다. go get 사용하기 예를 통해 알아보도록 하겠습니다. 사전 작업 github에 있는 pl..
목차[Go] JSON 패키지 알아보기JSON (JavaScript Object Notation)은 간단한 데이터 교환 형식입니다. json 패키지를 사용하면 go프로그램에서 JSON 데이터를 읽고 쓸 수 있습니다.EncodingJSON 데이터를 인코딩하기 위해서는 Marshal 함수를 사용합니다.func Marshal(v interface{}) ([]byte, error)Marshal 함수는 v를 인코딩한 JSON 값을 반환합니다. Marshal 함수는 아래와 같은 규칙으로 데이터를 JSON으로 인코딩합니다.- Boolean 값은 JSON boolean 값으로 인코딩 됩니다.bolB, _ := json.Marshal(true) // true - Number(int, float)값은 JSON number..
이전 글2020/12/13 - [언어/Go 언어] - [Go] context 알아보기 목차[Go] context 사용하기context를 사용하면 작업을 취소하거나 중간에 중지할 수 있습니다. context를 취소하는 방법에는 두 가지 측면이 있습니다.취소 이벤트 수신취소 이벤트 생성취소 이벤트 수신context type에서 제공하는 Done() method는 취소 이벤트를 수신하는 역할을 합니다.을 사용하여 취소 이벤트를 수신할 때까지 기다리게 할 수 있습니다. 아래 예는 이벤트를 처리하는데 2초가 걸리고 그전에 취소되면 즉시 반환하는 HTTP 서버입니다.package mainimport ( "fmt" "net/http" "time")func ctxTest(w http.ResponseWriter, ..
목차 [Go] context 알아보기 context패키지는 API 및 프로세스 간에 데드라인(deadline) 취소 시그널, 값 등을 전달하기 위해서 사용합니다. context를 사용하면 작업을 취소하거나 중간에 중지할 수 있습니다. 취소가 필요한 이유 작업 취소 시, 불필요한 작업을 수행하지 않고 빠르게 취소할 수 있다면 애플리케이션 성능에 큰 도움이 될 것입니다. 데이터베이스를 호출하여 쿼리된 데이터를 클라이언트에 반환하는 서버가 있다고 생각해보겠습니다. 문제가 없다면 아래와 같이 동작할 것입니다. Server가 요청을 받아 DB에 query를 전달하기 전에 클라이언트가 요청을 취소를 한다면 아래와 같이 동작할 것입니다. 클라이언트가 중간에 취소했음에도 불구하고 Server는 DB에 query를 전달..
이전 글2020/12/06 - [언어/Go 언어] - [Go] Modules 알아보기목차Modules 사용하기모듈 사용방법을 알아보도록 하겠습니다. 사전 작업$GOPATH/src의 바깥쪽에서 빈 디렉터리를 하나 생성합니다.$mkdir hellohello.go 파일을 생성합니다.package mainimport ( "fmt")func main() { fmt.Println("hello, world")}module 생성하기go mod init [module] 명령을 사용하여 새로운 모듈을 생성합니다.$ go mod init example.com/hellogo: creating new go.mod: module example.com/hellogo mod init명령을 수행하면 현재 패키지의 종속성 정보를 담고 ..
목차[Go] Modules 알아보기Go 모듈은 go 패키지들의 종속성을 관리하는 패키지 관리 시스템입니다. Go의 모듈 개념은 Go 애플리케이션 내의 종속성 문제를 처리하기 위해 도입되었습니다.모듈은 패키지를 트리 형식으로 저장하고 있으며, 루트 트리에는 go.mod 파일이 있습니다. 저장소, 모듈 및 패키지 간의 관계는 아래와 같습니다.저장소에는 하나 이상의 Go 모듈이 포함됩니다.각 모듈에는 하나 이상의 Go 패키지가 포함되어 있습니다.각 패키지는 단일 디렉토리에 있는 하나 이상의 Go 소스 파일로 구성됩니다.repository|-- module1| `-- package1| `-- src1.go| `-- src2.go| `-- go.mod| `-- package2| ..
목차[Go] Handle, HandlerFunc , HandleFunc 이해http 패키지에는 Handle, HandleFunc 함수가 있습니다.func Handle(pattern string, handler Handler)func HandleFunc(pattern string, handler func(ResponseWriter, *Request))Handle 함수와 HandlerFunc 함수는 pattern에 맞는 handler를 호출합니다.이 두 함수는 동작 방식은 같지만 사용하는 인자가 조금 다릅니다.HandleHandle 함수에는 인자로 Handler 가 필요합니다.Handler 는 ServeHTTP를 가지고 있는 interface입니다.type Handler interface { ServeH..
목차[Go] HTTP Server 만들기http 패키지는 HTTP 클라이언트 및 서버를 구현할 때 사용합니다. HTTP server를 만드는 방법은 4가지가 있습니다.No request parsingManual request parsingMultiplexerGlobal multiplexer크게 Multiplexer를 사용하느냐(3, 4) 안하느냐(1, 2)로 두 가지로 나뉩니다.1. No request parsing가장 기본적인 구현 방법 입니다.어떤 요청이 와도 동일한 응답만 하는 서버입니다.package mainimport ( "fmt" "net/http")type database map[string]stringfunc (d database) ServeHTTP(w http.ResponseWrite..
목차gdlv - Go언어 디버거gdlv는 go 언어 디버깅을 gui로 할 수 있는 tool입니다. 디버깅 중에 코드 , 변수, 스택, 고루틴 등 여러 정보를 한눈에 볼 수 있어 delve보다 디버깅이 편합니다.gdlv 설치1. delve 를 설치합니다.gdlv를 사용하려면 delve가 있어야 합니다.go get -u github.com/go-delve/delve/cmd/dlv2. gdlv를 설치합니다.go get -u github.com/aarzilli/gdlv3. 설치 확인을 합니다.$ gdlv versionGdlv DebuggerVersion: 1.4version 정보가 출력된다면 설치가 완료된 것입니다.gdlv 사용방법gdlv run 명령어는 프로그램 파일을 가지고 디버깅하는 명령어입니다.gdlv ..
목차 Delve란 Delve는 Go 언어용 디버거입니다. dlv 명령어를 사용하여 go 언어를 디버깅할 수 있습니다. Delve 설치 방법 Delve를 컴파일 하려면 Go 1.10 이상이 설치되어 있어야 합니다. 1. go get 명령어를 사용하여 delve를 설치합니다. $ go get github.com/go-delve/delve/cmd/dlv 2. 설치가 되었는지 확인해 봅니다. $ dlv version Delve Debugger Version: 1.5.0 version 정보가 나온다면 설치가 완료된 것입니다. Delve 사용 방법 dlv attach - 실행중인 프로세스에 연결하여 디버깅합니다. Usage: dlv attach pid [executable] [flags] Flags: --conti..