>  기사  >  백엔드 개발  >  Golang 함수에 전달되는 가변 길이 매개변수에 대한 자세한 설명

Golang 함수에 전달되는 가변 길이 매개변수에 대한 자세한 설명

王林
王林원래의
2023-05-16 21:51:041957검색

Golang은 최근 몇 년간 폭넓은 관심을 받고 있는 프로그래밍 언어입니다. 그 중에서 함수의 가변 길이 매개변수 전달은 상대적으로 특별한 기능으로, 함수를 요약하고 코드 중복을 줄이는 데 매우 실용적인 효과가 있습니다. 다음으로 Golang에서 함수의 가변 길이 매개변수 전달을 자세히 살펴보겠습니다.

1. 가변 길이 매개변수 전달의 기본 개념

Golang에서는 다른 프로그래밍 언어와 마찬가지로 함수도 0개 이상의 입력 매개변수를 받을 수 있습니다. 가변 길이 매개변수 전달은 임의 개수의 매개변수를 함수에 전달할 수 있는 특수 구문입니다. 특히, 가변 길이 매개변수 전달은 함수 매개변수 목록에 "..."를 추가하여 매개변수가 가변 길이임을 지정하여 원하는 수의 매개변수를 허용하는 것을 의미합니다.

가변 길이 매개변수 전달의 기본 형식은 다음과 같습니다.

func func_name(args ...type) return_type{

// function body

}

그 중 args는 가변 매개변수, type은 변수 유형, return_type은 함수 반환 유형입니다.

가변 길이 매개변수의 모든 값은 슬라이스로 압축되어 가변 매개변수로 전달된다는 점에 유의하세요.

2. 가변 길이 매개변수 사용 방법

가변 길이 매개변수의 사용은 매우 유연하고 다양합니다. 다음으로 샘플 프로그램을 사용하여 이 기능을 사용하는 방법을 자세히 알아 보겠습니다.

정수, 문자열, 부동소수점 등 세 가지 유형의 입력 매개변수를 받아 더하고 합산하여 인쇄할 수 있는 함수를 구현해야 한다고 가정해 보겠습니다. 더 간단하고 조잡한 방법은 다양한 유형의 입력 매개변수를 처리하는 세 가지 다른 함수를 작성하는 것이지만, 이렇게 하면 코드가 중복되고 서투르게 됩니다. 가변 길이 매개변수 전달을 사용하면 이 문제를 우아하게 해결할 수 있습니다.

코드는 다음과 같습니다:

package main

import (

"fmt"

)

func Add(nums...interface{}) float64 {

var sum float64
for _, val := range nums {
    switch v := val.(type) {
    case int:
        sum += float64(v)
    case float64:
        sum += v
    case string:
        fmt.Println("Cannot add a string")
        continue
    }
}
return sum

}

func main() {

fmt.Println(Add(1, 2, 3, 4, 5))
fmt.Println(Add(1.0, 2.0, 3.0, 4.0))
fmt.Println(Add("hello", "world", "golang"))

}

us 가변 길이 매개변수 nums와 float64 유형의 반환 값을 갖는 Add 함수가 정의됩니다. 함수 내에서 먼저 모든 입력 매개변수의 합계를 저장하기 위해 합계 변수를 초기화합니다. 그런 다음 for 루프와 범위를 사용하여 var 매개변수 목록을 순회하고 다양한 입력 유형에 따라 다양한 처리를 수행합니다.

이 예에서는 스위치 유형 판단을 사용합니다. 입력 매개변수가 int 유형이면 이를 float64 유형으로 변환하여 합계에 추가합니다. 입력 매개변수가 float64 유형이면 입력 매개변수가 문자열 유형이면 합계에 직접 추가됩니다. 오류 메시지를 표시하고 이 매개변수를 건너뜁니다.

메인 함수에서는 각각 Add 함수를 호출하고 다양한 유형의 매개변수를 전달합니다. 이것이 가변 매개변수의 힘입니다. 서로 다른 유형의 매개변수 수에 관계없이 각 유형에 대한 함수를 작성하지 않고도 모두 함수로 처리할 수 있습니다.

3. 가변 길이 매개변수의 본질

가변 길이 매개변수는 본질적으로 슬라이스 유형입니다. 즉, 각 입력 매개변수를 하나씩 함수에 전달하는 대신 슬라이스로 패키징하여 가변 매개변수에 전달합니다. . 이렇게 하면 다수의 개별 인수를 전달하는 것보다 가변 길이 인수를 전달하는 것이 더 효율적입니다.

고전적인 %v 형식 동사를 사용하여 가변 길이 매개변수의 값을 인쇄할 수 있습니다:

func main() {

fmt.Printf("%v

", []string{"a", "b", "c"} )
}

출력은 다음과 같습니다: [a b c]

4. 참고

변수 매개변수는 함수의 매개변수 목록에서 마지막에 배치되어야 합니다. 그렇지 않으면 컴파일 오류가 발생하기 때문입니다. 변수 매개변수는 슬라이스와 동일합니다. 매개변수 목록에서 다른 매개변수보다 먼저 정의하면 컴파일러가 길이를 결정할 수 없습니다.

결론

변수 매개변수는 프로그래밍 중에 더 간결하고 효율적인 코드를 사용하여 함수를 처리할 수 있게 해줍니다. 프로세스에서 가변 매개변수를 합리적으로 사용하면 코드의 신뢰성과 안정성이 향상되어 프로그램 유지 관리가 더 쉬워집니다.

위 내용은 Golang 함수에 전달되는 가변 길이 매개변수에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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