PHpullh
학습 라이브러리/Go/가변 인자 함수

GO · 함수

가변 인자 함수

...으로 가변 개수의 인자를 받는 함수를 정의합니다. 슬라이스를 펼쳐서 전달할 수도 있습니다.

함수중급variadicspreadellipsisany

핵심 설명

...으로 가변 개수의 인자를 받는 함수를 정의합니다. 슬라이스를 펼쳐서 전달할 수도 있습니다.

Go code

package main

import "fmt"

func sum(nums ...int) int {
	total := 0
	for _, n := range nums {
		total += n
	}
	return total
}

func wrap(prefix string, values ...any) string {
	return fmt.Sprintf("[%s] %v", prefix, values)
}

func main() {
	fmt.Println(sum(1, 2, 3))       // 6
	fmt.Println(sum())               // 0

	// 슬라이스를 가변 인자로 펼치기
	nums := []int{10, 20, 30}
	fmt.Println(sum(nums...))        // 60

	fmt.Println(wrap("INFO", "서버", "시작됨"))
}

학습 팁

가변 인자는 함수 내부에서 슬라이스로 취급됩니다. append(slice, elems...)도 같은 원리입니다.

주의할 점

가변 인자는 반드시 매개변수 목록의 마지막에 위치해야 합니다. func(nums ...int, s string)은 컴파일 에러입니다.

자주 묻는 질문

가변 인자 함수란 무엇인가요?

... 으로 가변 개수의 인자를 받는 함수를 정의합니다. 슬라이스를 펼쳐서 전달할 수도 있습니다.

가변 인자 함수 학습 시 주의할 점은 무엇인가요?

가변 인자는 반드시 매개변수 목록의 마지막에 위치해야 합니다. func(nums ...int, s string) 은 컴파일 에러입니다.