반응형
인수로 배열 압축 풀기
따라서 Python과 Ruby에는 배열을 인수로 풀기위한 표시 연산자 (*)가 있습니다. Javascript에는 .apply () 함수가 있습니다. Go에서 함수 인수로 배열 / 슬라이스를 풀 수있는 방법이 있습니까? 이것에 대한 모든 리소스도 훌륭합니다!
이것의 라인을 따라 뭔가 :
func my_func(a, b int) (int) {
return a + b
}
func main() {
arr := []int{2,4}
sum := my_func(arr)
}
구문 상 / 다양한 실수를 저질렀다면 사과드립니다. Go를 처음 사용합니다.
C와 유사한 vararg 구문을 사용할 수 있습니다.
package main
import "fmt"
func my_func( args ...int) int {
sum := 0
for _,v := range args {
sum = sum + v
}
return sum;
}
func main() {
arr := []int{2,4}
sum := my_func(arr...)
fmt.Println("Sum is ", sum)
}
이제 원하는만큼 많은 것을 합산 할 수 있습니다. 함수 ...
를 호출 할 때 중요한 점 을 주목하십시오 my_func
.
실행 예 : http://ideone.com/8htWfx
함수는 ...
Hunter McMillen이 보여준 것처럼 표기법과 함께 슬라이스를 사용할 수있는 varargs 이거나 함수에 고정 된 수의 인수가 있고 코드를 작성할 때 압축을 풀 수 있습니다.
고정 된 수의 인수 함수에 대해이 작업을 동적으로 수행하려면 리플렉션을 사용할 수 있습니다.
package main
import "fmt"
import "reflect"
func my_func(a, b int) (int) {
return a + b
}
func main() {
arr := []int{2,4}
var args []reflect.Value
for _, x := range arr {
args = append(args, reflect.ValueOf(x))
}
fun := reflect.ValueOf(my_func)
result := fun.Call(args)
sum := result[0].Interface().(int)
fmt.Println("Sum is ", sum)
}
아니요, 이에 대한 직접적인 지원은 없습니다. Python과 Ruby, 그리고 당신이 언급 한 자바 스크립트; 모두 동적 / 스크립팅 언어입니다. 예를 들어 Go는 동적 언어보다 C에 더 가깝습니다. '적용'기능은 동적 언어에는 편리하지만 C 또는 Go와 같은 정적 언어에는 거의 사용되지 않습니다.
참고 URL : https://stackoverflow.com/questions/17555857/go-unpacking-array-as-arguments
반응형
'programing' 카테고리의 다른 글
배경에서 잘라낸 투명한 텍스트 (0) | 2020.09.22 |
---|---|
Lisp의 어떤 방언을 배워야합니까? (0) | 2020.09.22 |
두 번째 매개 변수를 기준으로 튜플 정렬 (0) | 2020.09.21 |
대문자없이 IntelliJ IDEA 12 코드 완성 (0) | 2020.09.21 |
Bash 배열에서 요소 제거 (0) | 2020.09.21 |