함수 사용하기

이재홍 http://www.pyrasis.com 2014.12.17 ~ 2015.02.07

가변인자 사용하기

함수의 매개변수 개수가 정해져있지 않고 유동적으로 변하는 형태를 가변인자라고 합니다.

  • func 함수명(매개변수명 ...자료형) 리턴값_자료형 { }

이번에는 가변인자를 활용해서 매개변수로 받은 모든 값을 더하는 함수를 작성해보겠습니다.

func sum(n ...int) int { // int형 가변인자를 받는 함수 정의
	total := 0
	for _, value := range n { // range로 가변인자의 모든 값을 꺼냄
		total += value   // 꺼낸 값을 모두 더함
	}

	return total
}

func main() {
	r := sum(1, 2, 3, 4, 5)
	fmt.Println(r) // 15
}

실행 결과

15

매개변수의 자료형 앞에 ...을 붙여 가변인자로 지정합니다. ...int로 지정했으므로 int 형 값을 여러 개 받을 수 있습니다. 여기서 가변인자로 받은 변수는 슬라이스 타입이므로 range 키워드를 사용하여 값을 꺼내면 됩니다.

가변인자가 슬라이스 타입이므로 슬라이스를 바로 넘겨줄 수도 있습니다.

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

	return total
}

func main() {
	n := []int{1, 2, 3, 4, 5}
	r := sum(n...) // ...를 사용하여 가변인자에
                        // 슬라이스를 바로 넘겨줌

	fmt.Println(r) // 15
}

실행 결과

15

여기서 가변인자 함수는 int 형 값만 여러 개 받도록 되어 있고, 슬라이스 자체는 받을 수 없습니다. 따라서 매개변수에 슬라이스만 넣지 않고 뒤에 ...을 붙입니다. ...을 붙이면 슬라이스에 들어있는 요소를 각각 넘겨줍니다.


저작권 안내

이 웹사이트에 게시된 모든 글의 무단 복제 및 도용을 금지합니다.
  • 블로그, 게시판 등에 퍼가는 것을 금지합니다.
  • 비공개 포스트에 퍼가는 것을 금지합니다.
  • 글 내용, 그림을 발췌 및 요약하는 것을 금지합니다.
  • 링크 및 SNS 공유는 허용합니다.

Published

01 June 2015