go 가 1.22 버전이 추가 됐다. 가장 반길 부분은 loop에서 변수 캡쳐부분이다. go를 처음 배울때 가장 의아 하면서도 이해가 잘안됐던 부분이지만 생각보다 인지를 하고 사용해야한다는 강박에 goroutine을 사용할때 방법을 생각 해야했었다. 쉽게 말하자면 for i := 0; i < 10; i++ { go func() { fmt.Println(i) }() } 위와 같은 프로그램을 실행 시킨다면 다른 언어에서는 순서는 보장하지 않지만 0,1,2,3,4,5,6,7,8,9 가 출력될 것이고 go에서도 그렇게 될거 같지만 그렇지 않다. 가장 나중의 i의 값이 캡쳐가 돼서 10이 10번 출력된다. 이를 해결 하기 위한 방법은 i := i 이런식으로 재할당을 해주거나. go func(i int) { }(i..
Go 에서 http 요청을 하거나 내부 프로세스에서 요청을 할때 실패할 경우 다시 재시도 하는 패키지를 찾았다. 패키지는 github.com/avast/retry-go/v4 을 사용했고 가장 많은 star 를 보유하고 있는것 같다. 사용 방법은 다음과 같다. func TestRetryStrategy(t *testing.T) { retryOptions := []retry.Option{ retry.Attempts(uint(3)), // 재시도 3번 retry.LastErrorOnly(true), // 여러 에러중 가장 마지막 에러를 출력 retry.RetryIf(func(err error) bool { // 에러의 종류에 따라 중단할지 시작할지 결정 return true }), } count := 0 str..
Golang을 사용하다보면 임시 구조체를 사용하면 생각보다 유연하고 편하게 작업 할 수 있다. 함수 내에 스택에 할당됨으로 함수내에서만 사용가능하다. 일반적으로 사용하는 구조체와의 차이점이라고 할 수 있다. type Test struct{ TestId string } func Tt(){ t := &Test{} } 일반적으로는 위와같은 방법으로 구조체를 생성하고 사용하지만 다음과 같이 사용하면 구조체를 임시로 사용가능하다. func Tt(){ var Test struct{ TestId String } t := &Test{} } 위와 같이 함수내에 구조체를 정의 하여 사용할 수 있고, 슬라이스로도 사용이 가능하다. 활용방안은 데이터베이스를 사용할때 ORM 은 각 테이블에 관한 정보는 제대로 가져오나 (gro..
내 블로그 - 관리자 홈 전환 |
Q
Q
|
---|---|
새 글 쓰기 |
W
W
|
글 수정 (권한 있는 경우) |
E
E
|
---|---|
댓글 영역으로 이동 |
C
C
|
이 페이지의 URL 복사 |
S
S
|
---|---|
맨 위로 이동 |
T
T
|
티스토리 홈 이동 |
H
H
|
단축키 안내 |
Shift + /
⇧ + /
|
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.