GoLang 함수 파라미터에 가변인자 쓰기

728x170

 

 

안녕하세요?

 

GoLang(고랭) 공부에 도움이 되고자 가변인자 관련 좋은 예제 소개할려고 합니다.

 

많은 도움이 됐으면 합니다.

 

 

1. 함수 파라미터에 가변인자 쓰는 예제

 

package main
 
import "fmt"
 
func main() {
    fmt.Println(calculation("Rectangle", 20, 30))
    fmt.Println(calculation("Square", 20))
}
 
func calculation(str string, y ...int) int {
 
    area := 1
 
    for _, val := range y {
        if str == "Rectangle" {
            area *= val
        } else if str == "Square" {
            area = val * val
        }
    }
    return area
}

 

 

결과는 아래와 같습니다.

 

C:\golang\example>go run test1.go
600
400

C:\golang\example>

 

 

 

2. 가변인자에 다른 타입의 인자 전달하기

 

다음 예제에서 함수 시그니처는 slice 유형의 임의 개수의 인수를 허용합니다.

 

package main

import (
	"fmt"
	"reflect"
)

func main() {
	variadicExample(1, "red", true, 10.5, []string{"foo", "bar", "baz"},
		map[string]int{"apple": 23, "tomato": 13})
}

func variadicExample(i ...interface{}) {
	for _, v := range i {
		fmt.Println(v, "--", reflect.ValueOf(v).Kind())
	}
}

 

variadicExample 함수의 가변인자로 slice 타입을 전달했습니다.

 

실행 결과는 다음과 같습니다.

 

C:\golang\example>go run test3.go
1 -- int
red -- string
true -- bool
10.5 -- float64
[foo bar baz] -- slice
map[apple:23 tomato:13] -- map

C:\golang\example>

 

 

 

3. 가변인자에서 한개의 인자 선택하기

 

아래 예제에서는 variadicExample() 함수에 전달 된 첫 번째 인수 값 s[0]과 네 번째 인수 값 s[3]을 인쇄합니다.

 

package main

import "fmt"

func main() {
	variadicExample("red", "blue", "green", "yellow")
}

func variadicExample(s ...string) {
	fmt.Println(s[0])
	fmt.Println(s[3])
}

 

실행 결과는 아래와 같습니다.

 

C:\golang\example>go run test1.go
red
yellow

C:\golang\example>