일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- onDestory
- bitwiseNot
- golang
- ...$$restProps
- nestjs
- GraphQL
- TypeScript
- GIT
- mock
- :=
- Terraform
- smui
- 번역
- testing
- reactjs
- 인라인핸들러
- githook
- docker-network
- apiTest
- Svelte LifeCycle
- svelte
- cron
- docker
- 도커
- go
- PostgreSQL
- JavaScript
- IAC
- react
- 도커컨테이너
- Today
- Total
목록GoLang (19)
Den`s blog
Singleton Pattern 은 가장 흔하게 볼 수 있는 디자인 패턴 중에 하나이다. 정의를 간단하게 보자면 아래와 같다. 클래스를 하나의 객체로만 제한하는 것 간단하게 Go 코드로 보면 아래와 같다. type User struct { name string } var user *User func init() { user = &User{name :"den"} } func GetUser() *User { return user } user 라는 변수는 init 이라는 함수안에서만 생성이 되고, GetUser 를 통해서만 접근이 가능한 코드이다. Go 에서는 다른 패키지의 함수를 호출할 수 있는 조건이 대문자로 시작하는 경우이기 때문에 다른 패키지에서는 GetUser 만 호출이 가능하다. 그렇다면 init ..
Go 에서 변수를 생성/할당하는데는 익히 알고 있듯 2가지 방법이 있다. := 와 = 를 활용하는 것인데, 검색하면 쉽게 나오는 두 방식의 차이에 대해서 먼저 간단하게 설명해보면 아래와 같다. 1. = var a int = 5 var 키워드로 변수임을 알려주고, 변수명을 작성하고, 타입을 작성한 뒤, 선택에 따라서 값을 할당해주면 된다. 2. := a := 5 1번의 예제와 동일한 효과를 짧게 내는 구문이다. := 의 공식 명칭은 short assignment stament 이다. 그런데, 2번에는 원래 재할당이 되지 않는다. 재할당을 하는 경우에는 아래와 같은 에러를 보게 될 것이다. := 의 왼쪽이 새 변수가 아니라는 뜻이다. 이 말인즉슨, 이미 선언된 변수에는 사용이 불가하다는 것인데, 2개, 3개..
오늘은 Golang Version을 최신화 하는 법에 대해서 알아보고자 한다. 나는 Homebrew 를 통해 Go 를 설치하였다. 일단 현재 Go Version 을 확인해보자. $ go version go version go1.16 darwin/arm64 현재 깔려 있는 것은 1.16 Version 이다. 그렇다면 최신 버전은 몇일까 ? brew info 명령어를 통해 확인하니, 1.17.3 이란다. 하자! 일단 brew 를 최신버전으로 update 해주고, upgrade go 를 해주면 된다. $ brew update // 시간이 많이 소요될 수 있음 $ brew upgrade go 최종 확인!
Golang 에서 프로그램을 종료하는 것에 대해서 제일 처음 알게 되는 것이 아마도 os.Exit() 일 것이다. 그러나, 오늘은 다른 종료 메소드인 runtime.Goexit() 과 비교하면서 둘의 차이점에 대해서, 그리고 runtime.Goexit() 를 써야하는 경우에 대해서 알아보자. 1. os.Exit Conventionally, code zero indicates success, non-zero an error. The program terminates immediately; deferred functions are not run. 공식 문서를 살펴보면, Exit 의 아규먼트로 0을 주면 성공, 아닌 경우에는 에러라고 한다. 그리고 그 뒤에 말이 중요한데, 프로그램을 즉시 종료한다고 한다. d..
GoLang 에서 테스트를 돌리기 위해서는 go test 를 쓰면 된다. 그런데, 해당 명령어는 디렉토리 안에 있는 것만 확인한다. 하위 디렉토리는 확인을 하지 않는다. 프로젝트 안에 테스트파일이 있어도 위와 같이 뜨고 있다. 그렇다면 전체로 테스트를 돌리기 위해서는 어떻게 해야 할까 ? go test ./... 위 명령어만 실행해주면 간단하게 전체 테스트가 가능해진다.
API 만드는 프로젝트에 Swagger 를 붙여보자 GoLang 에서는 swaggo 를 활용해서 붙일 수 있다. Step1. Install # 복사 스크롤 용의성 go get -u github.com/swaggo/swag/cmd/swag go get -u github.com/swaggo/http-swagger go get -u github.com/alecthomas/template # 복사 스크롤 용의성 swag - Swagger 2.0 의 Go annotations 활용 http-swagger - Swagger UI 를 doc 으로 만들어 줌 template - 뭐 필수란다, 없으면 에러 뜬다고.. Step2. Definition type test struct { A int B string } // @..
M1 에서 Docker 가 되지 않았는데, Preview 버전이 나왔다는 소식을 듣고 헐레벌떡 Go 와 Docker 를 테스트 해보기로 ! 기존에 포스팅돼있던 글을 참고해서 HotReload 기능 까지... Step 1. Preview Download 하기 기존에 도커 설치하던 것과 동일하다. 간간히 버그가 있다고는 하니 언능 정식버전이 나오길 물 떠놓고 기도하자 Preview Download Apple M1 Tech Preview docs.docker.com Step2. Dockerfile 생성 HotReload 를 하기 위해서 reflex 를 이용한다. 여기서 삽질 잠깐했는데, alpine 버전으로 하지 않아서, apk 명령어를 못찾던 일.. 기초지만 늦게 배웁니다. alpine 은 linux 환경을..
Golang 에서 서비스/어플리케이션 실행시에 Argument 들을 받는 방법에 대해서 알아보도록 하자 서비스를 실행시키는 대표적인 두 방법 Build 와 Run 각각 알아보도록 하려고 한다. 1. Run // stdOut.go package main import ( "fmt" "os" ) func main() { myString := "" arguments := os.Args if len(arguments) == 1 { myString = "Please give me one argument !" } else { myString = arguments[1] } //fmt.Println(arguments) fmt.Println(myString) } 위 파일을 go run stdOut.go 로 실행하면 Ple..
Go 의 장점으로 static linking 에 대해서 간략하게 얘기해 본적이 있고, build 에 대해서도 간략하게 본 적이 있어서, 이번에 그에 관한 포스팅을 진행하고자 한다. Go 코드를 어떻게 컴파일 하는지에 대해서 알아보자. Go 는 컴파일 하는데 Graphic Application 은 따로 필요하지 않고 파일의 이름에 대해서도 영향을 받지 않는다. 단지, 단 하나의 main() function 만 존재하면 되고, 시작점이기 때문에 오직 하나만 main 이 가능하다. aSourceFile.go 파일을 아래와 같이 만들었다고 가정하자. package main import "fmt" func main() { fmt.Println("This is a sample Go program!") } 굉장히 간..
Golang 을 하면서 크롤러를 만들게 되었고, 하다보니 캘린더 관련해서 여러가지 function들이 필요해서 패키지를 직접 만들어 배포해보기로 하였다. 가장 간단하고 빠르게 하는 법으로 해보기로 하였고, 그 후에 추가적으로 테스트를 붙이고 해보았다. 패키지 사이트 깃허브 shinYeongHyeon/go-times It will save your time such as coding a calendar! Contribute to shinYeongHyeon/go-times development by creating an account on GitHub. github.com 먼저 모듈로 작동해야 하기 때문에 main function 은 만들지 않았다. 해당 파일에 필요한 함수들을 만들고 정식으로 배포하기 위해..