Go 언어 가변인자 함수 대하여 배워보기
오늘은 Go 언어의 가변인자 함수에 대하여 작성하면서 배워보려 합니다.
package main
import (
"reflect"
"fmt"
)
func testInt(n ... int) {
fmt.Println(reflect.TypeOf(n),n)
}
func main() {
testInt(1,2,3)
testInt(1,2,3,4,5)
}
가변인자 함수를 위와 같이 작성하여 사용할 수 있습니다.
가변인자로 받은 것은 슬라이스로 타입이 표기됩니다.
package main
import (
"reflect"
"fmt"
)
func testArray(n ... []int) {
fmt.Println(reflect.TypeOf(n),n)
}
func main() {
var a = make([]int,5,10)
testArray(a)
var b = make([]int,10,10)
testArray(b)
}
슬라이스를 가변인자 함수에 넣으면 2차원 슬라이스로 됩니다.
슬라이스를 넣을 때는 []
를 꼭 잊지 말아야 합니다.
package main
import (
"fmt"
)
func changeInt1(n ... []int){
n[0][0] = 1
}
func main() {
c := make([]int,3,3)
changeInt1(c)
fmt.Println(c)
}
일반적으로 함수에 배열을 넣어서 수정했을 때처럼 main에도 수정된 값이 반영됩니다.
다만 슬라이스를 넣으면 2차원 배열처럼 접근해야 됩니다.
package main
import (
"fmt"
)
func changeInt2(n ... int){
n[0] = 1
}
func main() {
d := make([]int,3,3)
changeInt2(d...)
fmt.Println(d)
}
그래서 위와 같이 코드를 변경해서 작성하면 가변인자를 int형으로 받기 때문에 평소에 사용하던 차원대로 수정할 수 있습니다.
Written on September 14, 2018