Go 의 가변 인자 함수

GolangGolangBeginner
지금 연습하기

This tutorial is from open-source community. Access the source code

💡 이 튜토리얼은 영어로 번역되었습니다. 원본을 보려면 영어로 전환

소개

Go 에서 가변 개수의 인수를 받을 수 있는 함수를 가변 인자 함수 (variadic function) 라고 합니다. 이 랩에서는 Go 에서 가변 인자 함수를 사용하는 방법에 대한 이해도를 테스트합니다.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL go(("Golang")) -.-> go/FunctionsandControlFlowGroup(["Functions and Control Flow"]) go/FunctionsandControlFlowGroup -.-> go/functions("Functions") subgraph Lab Skills go/functions -.-> lab-15528{{"Go 의 가변 인자 함수"}} end

가변 인자 함수 (Variadic Functions)

이 랩에서는 임의의 정수 개수를 인수로 받아 최대값을 반환하는 max라는 함수를 구현해야 합니다.

  • 함수 max는 임의의 정수 개수를 인수로 받아야 합니다.
  • 함수 max는 인수로 전달된 정수들의 최대값을 반환해야 합니다.
$ go run variadic-functions.go
[1 2] 3
[1 2 3] 6
[1 2 3 4] 10

## Go 의 함수의 또 다른 핵심적인 측면은
## 클로저 (closures) 를 형성하는 능력이며,
## 다음에서 살펴보겠습니다.

전체 코드는 다음과 같습니다.

// [_가변 인자 함수_](https://en.wikipedia.org/wiki/Variadic_function)
// 는 임의의 개수의 후행 인수로 호출될 수 있습니다.
// 예를 들어, `fmt.Println` 은 일반적인 가변 인자 함수입니다.

package main

import "fmt"

// 여기는 임의의 개수의 `int` 를 인수로 받는 함수입니다.
func sum(nums ...int) {
	fmt.Print(nums, " ")
	total := 0
	// 함수 내에서 `nums` 의 타입은
	// `[]int` 와 같습니다. `len(nums)` 를 호출하고,
	// `range` 를 사용하여 반복할 수 있습니다.
	for _, num := range nums {
		total += num
	}
	fmt.Println(total)
}

func main() {

	// 가변 인자 함수는 일반적인 방식으로
	// 개별 인수를 사용하여 호출할 수 있습니다.
	sum(1, 2)
	sum(1, 2, 3)

	// 이미 슬라이스에 여러 인수가 있는 경우,
	// `func(slice...)` 를 사용하여 가변 인자 함수에 적용합니다.
	nums := []int{1, 2, 3, 4}
	sum(nums...)
}

요약

이 랩에서는 Go 에서 가변 인자 함수를 사용하는 방법을 배웠습니다. 임의의 정수 개수를 인수로 받아 최대값을 반환하는 max라는 함수를 구현했습니다.

OSZAR »