English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
다른 양의 매개변수를 호출하는 함수는 가변 매개변수 함수라고 합니다. 다시 말해, 사용자가 가변 함수에 0개 이상의 매개변수를 전달할 수 있게 합니다.fmt.Printf이는 가변 매개변수 함수의 예제로, 시작 시 고정된 매개변수가 필요하며 이후에는 어떤 양의 매개변수를 받을 수 있습니다.
중요 사항:
가변 매개변수 함수의 선언에서는 마지막 매개변수의 타입 앞에 구두점이 들어가 있습니다. 즉(…)。이는 함수가 이러한 유형의 매개변수의 양을 불러올 수 있다는 것을 의미합니다
문법:
function function_name(para1, para2...type)type{ // code... }
함수 function …type의의 행위는 슬라이스와 유사합니다. 예를 들어, add(b…int)int와 같은 함수 서명이면, 이제 type [] int의 매개변수입니다.
또한 변환 가능한 매개변수 함수에 기존 슬라이스를 전달할 수 있습니다. 이를 위해, 함수에 전체 배열의 일부를 전달하면 됩니다. 예를 들어, 아래와 같이예제2와 같이 표시됩니다.
변환 가능한 매개변수 함수에 어떤 매개변수도 전달하지 않을 때, 함수 내부의 기본 값은 nil입니다.
변환 가능한 매개변수 함수는 일반적으로 문자열 포맷에 사용됩니다.
또한 변환 가능한 매개변수 함수에 여러 개의 슬라이스를 전달할 수 있습니다.
변환 가능한 매개변수를 반환 값으로 사용할 수 없지만, 슬라이스로 반환할 수 있습니다.
제로 개의 매개변수와 여러 개의 매개변수를 보여주는 예제:
package main import ( "fmt" "strings" ) //변환 가능한 매개변수 함수로 문자열을 연결합니다 func joinstr(element ...string) string { return strings.Join(element, "-) } func main() { //제로 매개변수 fmt.Println(joinstr()) //여러 매개변수 fmt.Println(joinstr("GEEK", "GFG")) fmt.Println(joinstr("Geeks", "for", "Geeks")) fmt.Println(joinstr("G", "E", "E", "k", "S")) }
출력:
GEEK-GFG Geeks-for-Geeks G-E-E-k-S
예제2, 변환 가능한 매개변수 함수로 문자열을 연결, 변환 가능한 함수에서 슬라이스를 전달합니다:
package main import( "fmt" "strings" ) //변환 가능한 매개변수 함수로 문자열을 연결합니다 func joinstr(element...string)string{ return strings.Join(element, "-) } func main() { //변환 가능한 함수에서 슬라이스를 전달합니다 element:= []string{"geeks", "FOR", "geeks"} fmt.Println(joinstr(element...)) }
출력:
geeks-FOR-geeks
변환 가능한 매개변수 함수를 사용할 때:
함수에 슬라이스를 전달할 때 변환 가능한 매개변수 함수를 사용합니다.
매개변수의 수를 알 수 없을 때 변환 가능한 매개변수 함수를 사용합니다.
프로그램에서 변환 가능한 매개변수 함수를 사용할 때, 프로그램의 가독성을 높일 수 있습니다.