본문 바로가기

golang

(7)
golang 조건문 사용시 주의할 점 ! golang 으로 조건문을 사용할 때 주의할점이 있다. package main import "fmt" func setInt() (int, int, error) { return 5, 6, nil } func main() { var err error if err != nil { fmt.Println("error event occurred") } myInt := 3 if true { myInt, newInt, err := setInt() if err != nil { fmt.Println("error event occurred") } fmt.Println("inside of if condition: ", myInt, newInt) } fmt.Println("after if condition: ", myInt) ..
golang gin API + swagger 적용하기 swagger 는 단순 API 문서화를 넘어 FE와 연동에도 적극적으로 활용된다. 그렇기 때문에 API Server의 swagger 연동은 당연하게 필요하게 되는데, 간단한 go API server에 swaggo를 적용해보자 swaggo? Automatically generate RESTful API documentation with Swagger 2.0 for Go 위 설명에 나와있듯이 자동으로 REST API docs를 만들어주는 프레임웍을 의미한다. 방법 swaggo module 다운로드 아래처럼 설치 후 Go Project root 경로에서 init을 수행한다. 그럼 자동으로 docs/ directory와 필요 파일들을 생성된다. $ go get -u github.com/swaggo/swag/cm..
Go gin middleware 적용하기 middleware(미들웨어) ?? client server 통신에서, 중복되는 일(인증, 로깅, ...)을 효과적으로 처리하기 위해 middleware를 활용합니다. cleint middleware server middleware(미들웨어)를 golang의 API Server 에서 적용시키는 예제를 확인합니다. 예제 지난 포스트 에서 gin 패키지를 이용한 API 를 만들었었는데 비슷하게 활용할 예정이다. main.go package main import "github.com/gin-gonic/gin" // middleware 구현 func DummyMiddleware() gin.HandlerFunc { // Do some initialization logic here return func(c *gin..
API server를 위한 go Gin 설치하고 사용하기 (예제) GIN? Gin is a web framework written in Go (Golang). It features a martini-like API with performance that is up to 40 times faster thanks to httprouter. If you need performance and good productivity, you will love Gin. (GIN git)[https://github.com/gin-gonic/gin] 위 내용대로 _Gin은 Go로 작성된 웹 프레임웍_이다. httprouter 덕분에 40배나 빠른 퍼포먼스를 자랑한다고 한다.. (무슨말인지 ?) 이정도로만 알고 넘어가자.. Gin 설치 간단한 시험을 위해 우선 프로젝트 디렉토리를 하나 만들고..
[golang] go routine과 chan 이용한 메세지 입력 golang의 가장 강력한 무기는 go routine을 이용한 효율적인 비동기 프로세스로 볼 수 있는데, 이를 잘 활용하기 위해 chan을 활용한다. (chan 역시 go의 아주 큰 장점이다) 아래 예제는 사용자의 입력을 10초동안 기다리면서 1초에 한번 알람을 출력하다가, 입력값이 들어오면 프로그램을 종료하는 내용이다. package main import ( "fmt" "time" ) func main() { ch := make(chan string) go sendMessage(ch) remainSec := 10 for remainSec > 0 { select { case tmp :=
[golang] defer, panic, recover golang에는 try~ catch역할을 할 수 있는 기능을 defer, panic, recover type으로 제공한다. 1. defer defer는 함수의 마지막에 호출할 수 있도록 stack에 해당 라인을 추가한다. (stack으로 추가되니 여러개의 defer가 있는 경우 LIFO(Last In First Out)으로 실행) 예를 들어 file 입출력을 할 때, file Open 이후 바로 defer close() 와 같이 선언하여 함수 종료 후 file을 close 할 수 있게된다. 만약 함수 실행 중 에러로 인해 비정상 종료되는 경우에도 defer 실행 후 종료되는데, 이 때 발생한 에러보다 이전에 defer가 수행되어 있어야 한다. 2. panic go 프로그램 실행 도중 에러로 인해 프로그램..
[golang] 구조체 , 메소드 예제 (map 초기화) 구조체 golang은 struct를 지원하지만, 메소드는 객체 밖에서 선언하여 사용할 수 있다. 이름과 성별, 그리고 성적을 저장하는 struct를 예제로 확인해보자 package main import "fmt" type student struct { name string gender string score map[string]int } func createStudent(name string, gender string) student{ s := student{name: name, gender: gender} s.score = map[string]int{} return s } func main() { var numStu, numScore, valueScore int var name, gender, name..

반응형