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 서버에 대한 기본 컨텍스트를 설정하는 데 사용됩니다.
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()를 사용해야 하는 경우:
위 내용은 Go Context — TODO() 대 Background() 더 이상 혼란스럽지 않습니다!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!