Go 패키지를 볼 때, 아래와 같은 문법을 사용한 함수를 심심찮게 볼 수 있습니다.

func GetCommandLineMultiArgs(args ... string) {
   arguments := make(map[string]*string)

   for _, arg := range args {
      tempVar := flag.String(arg, "", arg)
      arguments[arg] = tempVar
   }

   flag.Parse()
}


...의 의미는 파이썬의 *args와 유사합니다. 파라미터로 입력된 타입의 데이터를 몇 개 받을지 확실하지 않을 때 사용합니다.

아래는 String 타입의 데이터를 받는 예제입니다.

package main
import "fmt"
 
func main() {
	test("111")
	test("111","222","333")
}
 
func test(args ... String) {
	fmt.Println(args)
}
 
# 결과
# [111]
# [111 222 333]


위와같이 슬라이스로 생성된 스트링 리스트를 반환하게 됩니다.


위에서 정의한 test()함수에 이미 존재하는 슬라이스 타입을 전달하려면 아래와 같이 선언합니다.

package main
import "fmt"
 
func main() {
	nums := []string{"111", "222", "333"}
	test(nums...)
}
 
func test(args ... String) {
	fmt.Println(args)
}
 
# 결과
#[111 222 333]


'언어 > GO' 카테고리의 다른 글

[GO] map에서 key값 존재유무 확인  (0) 2017.02.02
[GO] if문에 세미콜론(;) 의미  (0) 2017.02.02
[GO] 파라미터 ... 의미  (0) 2017.01.18
[GO] init() 함수 호출 시점  (0) 2017.01.18
[GO]슬라이스 용량 주의사항  (0) 2017.01.18
[GO] 현재 폴더 경로 확인  (0) 2017.01.17

+ Random Posts