"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Go Context — TODO() 대 Background() 더 이상 혼란스럽지 않습니다!

Go Context — TODO() 대 Background() 더 이상 혼란스럽지 않습니다!

2024-11-06에 게시됨
검색:960

Go Context — TODO() vs Background() No more confusing!

Go에서 컨텍스트 패키지는 요청 범위 값, 취소 신호 및 기한을 관리하는 데 도움이 됩니다.
컨텍스트를 시작하는 두 가지 일반적인 방법은 context.TODO() 및 context.Background()입니다.
비슷하게 동작하지만 용도는 다릅니다.

컨텍스트.배경()

context.Background()는 특별한 처리(예: 취소 또는 기한)가 필요하지 않은 경우 기본값입니다.
이는 main, init에서 또는 더 구체적인 컨텍스트가 필요하지 않은 작업을 초기화할 때 자주 사용됩니다.

예:

 func main() {
     ctx := context.Background()
     server := http.Server{Addr: ":8080", BaseContext: func(net.Listener) context.Context {
         return ctx
     }}
     log.Fatal(server.ListenAndServe())
 }

이 예에서 context.Background()는 HTTP 서버에 대한 기본 컨텍스트를 설정하는 데 사용됩니다.

컨텍스트.TODO()

context.TODO()는 자리 표시자 컨텍스트입니다. 어떤 컨텍스트를 제공해야 할지 확신이 없거나 나중에 리팩토링할 계획이 있을 때 사용하세요.

예:

 func processOrder() {
     ctx := context.TODO() // Placeholder, decision on context pending
     err := db.SaveOrder(ctx, orderData)
     if err != nil {
         log.Println("Failed to save order:", err)
     }
 }

여기서 context.TODO()는 보다 구체적인 컨텍스트가 정의될 ​​때까지 데이터베이스 작업에 일시적으로 사용됩니다.

주요 차이점

두 함수 모두 빈 컨텍스트를 반환하지만 서로 다른 의도를 표현합니다.

  • context.Background(): 특별한 컨텍스트 기능이 필요하지 않다고 확신할 때 사용됩니다.
  • context.TODO(): 향후 변경 사항을 알리는 임시 자리 표시자 컨텍스트입니다.

결론

context.Background()를 사용해야 하는 경우:

  • HTTP 서버나 데이터베이스 연결과 같은 핵심 서비스를 초기화하는 경우.
  • 취소, 기한, 가치가 필요하지 않은 경우.

context.TODO()를 사용해야 하는 경우:

  • 리팩토링할 때 아직 컨텍스트를 결정하지 않았습니다.
  • 향후 개선이 필요한 초기 단계 코드를 구현할 때.
릴리스 선언문 이 글은 https://dev.to/zakariachahboun/are-you-confused-about-contexttodo-vs-contextBackground-heres-what-you-need-to-know-2h46?1 에서 재현됩니다.1 침해가 있는 경우 , [email protected]로 문의해주세요.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3