Language/Go

· Language/Go
상황 설명회사에서 MySQL로 DB를 바꾸면서 코드를 전반적으로 수정할 수 있는 기회가 있었다. 평소에 사소하지만 눈여겨 보고 있었던 리팩토링 희망사항(?)이 있었는데,바로 config에 입력된 수많은 db 테이블들을 go 코드에서 각각 객체로 만들기 위해 또 변수명으로 해당 이름을 재사용(!)한다는 점이다. 말보다는 코드로 보는게 설명이 편할 것 같아 냅다 예시 코드를 가져왔다. (그렇다 원래는 MongoDB를 사용했다.)// config.toml[SomeDB]collectionName1 = "collectionName1"collectionName2 = "collectionName2"collectionName3 = "collectionName3"// config.gotype SomeDB struct {..
· Language/Go
Go 서버에서 mongoDB에 데이터를 넣을 때 추가할 수 있는 신기한 기능(?)을 리팩토링 코드 리뷰를 받으면서 알게되어 그 내용을 정리하여 글을 쓰고자 한다.리뷰받은 코드는 다음과 같다.types.DataToUpdateInMongo{ ... TotalTradingVolume: totalTradingVolume.String() ...} 여기서 TotalTradingVolume 엄청나게 큰 숫자 값(블록체인 서비스다보니 기본 단위가 10^18 이기 때문)이다. 이래저래 사칙연산도 필요하다 보니 decimal.Deciaml 타입인 totalTradingVolume을 변수로 계산을 마친 후, 이제 mongo db 저장을 위해 최종 구조체에 값을 저장하려고 하는 코드이다. mongo에 이..
· Language/Go
회사 프로젝트에서 2가지 방법으로 http response를 읽고 decode 하고 있다는 걸 발견했다. 둘 다 제대로 서비스가 동작하고 있는데 내부 동작이 어떻게 다른지 차이점이 궁금해서 공부해보았다. json.Decoder, Decode, Unmarshal 그리고 io.ReadAll 을 중심으로 살펴볼 예정이다. 코드 비교 우선 코드부터 살펴보자. 두 코드 모두 client.Do()를 이용해 response(*http.Response 타입)를 가져온다. 차이점은 response body(io.ReadCloser 타입)를 읽고 원하는 go 변수에 값을 넣어주는 방법이다. if resp, err := client.Do(req); err != nil { return err } else if body, er..
빵빵0
'Language/Go' 카테고리의 글 목록