"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 사용자 정의 `errors.New` 구현에서 `fmt.Sprintf`에 변수 인수를 전달하는 방법은 무엇입니까?

사용자 정의 `errors.New` 구현에서 `fmt.Sprintf`에 변수 인수를 전달하는 방법은 무엇입니까?

2024-11-09에 게시됨
검색:152

How to Pass Variable Arguments to `fmt.Sprintf` in a Custom `errors.New` Implementation?

오류 버전을 구현하는 방법.fmt.Sprintf와 동일한 매개변수를 허용하는 새로운 기능

오류 버전을 구현합니다.와 동일한 매개변수를 허용하는 새로운 기능 fmt.Sprintf에서는 다음과 같이 정의된 NewError 함수를 사용할 수 있습니다:

func NewError(format string, a ...interface{}) error {
    return errors.New(fmt.Sprintf(format, a))
}

그러나 이 함수는 a의 가변 개수 인수가 NewError의 단일 배열 매개변수가 되어 Sprintf가 형식 문자열에서 단일 매개변수만 채우게 되므로 올바르게 작동하지 않습니다.

이 문제를 해결하려면 NewError의 마지막 매개변수를 ... 구문을 사용하여 가변 개수의 인수로 표시해야 합니다.

func NewError(format string, a ...interface{}) error {
    return errors.New(fmt.Sprintf(format, a...))
}

이를 통해 fmt.Sprintf는 a를 가변 개수의 인수로 해석할 수 있습니다.

최신 튜토리얼 더>

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

Copyright© 2022 湘ICP备2022001581号-3