코딩/GoLang

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

드리프트 2021. 2. 3. 21:38
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>

 

그리드형