>백엔드 개발 >Golang >Go의 Variadic 함수에서 매개변수 준수를 어떻게 적용할 수 있나요?

Go의 Variadic 함수에서 매개변수 준수를 어떻게 적용할 수 있나요?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-07 19:12:14634검색

How Can I Enforce Parameter Compliance in Go's Variadic Functions?

Go에서 가변 함수로 매개변수 준수 강제

Go 언어에서는 제공된 매개변수 없이 가변 함수의 사용을 허용하지만 이러한 시나리오를 방지하는 것이 바람직할 수 있습니다. 호출자 코드의 잠재적인 버그로 간주합니다. 그러나 컴파일 타임 오류로 이를 달성하는 것은 언어에서 직접 지원되지 않습니다.

해결책: 함수 서명 수정

이 제한을 극복하려면 다음을 포함하도록 함수의 서명을 수정할 수 있습니다. 비가변 매개변수와 가변 매개변수 둘 다. 이 접근 방식을 사용하면 함수 호출 중에 하나 이상의 매개 변수가 제공됩니다. 예:

func min(first int, rest ...int) int {
    // Implement your logic here
    return 0
}

사용 예

이 서명을 사용하면 min 함수를 다음과 같이 호출할 수 있습니다.

min(1) // Valid
min(1, 2) // Valid
min(1, 2, -3) // Valid

그러나 없이 함수를 호출하려고 하면 인수를 사용하면 컴파일 시간 오류가 발생합니다.

min() // Error: not enough arguments in call to min

두 개의 Variadic을 사용하여 함수 처리 매개변수

최소 두 개의 인수를 제공해야 하는 경우 함수 서명을 추가로 수정할 수 있습니다.

func min(first, second int, rest ...int) int {
    // Implement your logic here
    return 0
}

추가 고려 사항

이 기술은 조항을 효과적으로 시행합니다. 하나 이상의 매개변수에 대해 균형을 맞추는 것이 중요합니다. 특히 사전 정의된 슬라이스로 함수를 처리하면 아래와 같이 호출 코드에 추가 단계가 도입될 수 있습니다.

s := []int{1, 2, -3}
fmt.Println(min(s[0], s[1:]...))

대체 접근 방식

함수 서명을 수정할 수 없는 경우 런타임 패닉이 발생합니다. 또는 매개변수가 제공되지 않는 경우를 처리하기 위해 종료 메커니즘을 사용할 수 있습니다. 그러나 이 접근 방식은 컴파일을 막을 수 없으며 실행 단계에서 적절한 처리가 필요합니다.

위 내용은 Go의 Variadic 함수에서 매개변수 준수를 어떻게 적용할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.