일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- concurrency
- Neo4j
- token bucket
- go best practices
- Golang
- neo4j성능
- 프로그래밍
- go
- Database
- 중심성 측정
- SQLD
- cypher팁
- 커뮤니티 탐지
- GraphDB
- cypher
- 정리
- 그래프 데이터베이스
- cypher 쿼리
- 자격증
- 엔터티
- apoc 라이브러리
- arangodb
- 데이터모델링
- n8n
- cypher쿼리
- 고루틴
- basic golang
- 쿼리프로파일링
- graph
- 그래프데이터베이스
- Today
- Total
목록go best practices (2)
Jamie the programmer

Go 언어로 프로그래밍할 때, 여러 고루틴이 동시에 동작하다 보면 언제, 어떻게 안전하게 종료시킬지 고민하게 된다. 단순히 프로세스를 종료하는 것이 아니라, 자원 해제, 데이터 무결성 보장, 작업 마무리 등 여러 요소를 고려해야 하는데, 이를 "Gracefully 하게 죽인다"라고 표현한다.그럼, Gracefully 하게 죽인 다는 기준은 무엇일까?안전한 자원 해제: 열려있는 파일, 데이터베이스 연결, 네트워크 소켓 등 모든 자원을 올바르게 닫아야 한다.데이터 무결성 유지: 진행 중인 작업이나 처리 중인 데이터가 중간에 끊겨 데이터 불일치나 손실이 발생하지 않아야 한다.예측 가능한 종료: 고루틴이 종료될 때, 어떠한 예외 상황 없이 명시된 절차에 따라 종료되어야 한다.이 글에서는 두 가지 방법을 살펴본다..

1. 중첩을 피하고 에러를 먼저 처리하라✅ 핵심 로직을 깊게 중첩하지 않도록 에러를 먼저 처리// Bad: 중첩이 깊어지는 코드func process(value int) error { if value > 0 { if value = 100 { return errors.New("value must be less than 100") } if value%2 != 0 { return errors.New("value must be even") } return nil}2. 중복을 피하라✅ 반복되는 코드를 함수로 추출하여 재사용// Bad: 중복 코드 발생func printHelloWorld() { fmt.Println("Hello, World!")}func printHelloUser(name string) { ..