Reflect 패키지의 .Call 이해
Reflect 패키지의 .Call 기능을 활용하는 경우 올바른 조작 방법을 이해하는 것이 중요합니다. "in" 변수를 사용하여 적절한 함수 매개변수를 전달합니다.
다음 시나리오를 고려하세요.
<code class="go">params := "some map[string][]string" in := make([]reflect.Value, 0) return_values := reflect.ValueOf(&controller_ref).MethodByName(action_name).Call(in)</code>
호출되는 함수는 다음과 같이 정의됩니다.
<code class="go">func (c *Controller) Root(params map[string][]string) map[string] string{}</code>
해결 방법 "반영: 입력 인수가 너무 적은 호출" 오류가 발생하면 .Call의 구문을 이해하는 것이 중요합니다. 문서에 명시된 대로 in 슬라이스의 각 요소는 함수 인수에 해당합니다. 따라서 함수에 단일 매개변수가 필요한 경우 in에는 적절한 유형의 하나의 Reflect.Value가 포함되어야 합니다.
제공된 예에서 올바른 접근 방식은 다음과 같습니다.
<code class="go">m := map[string][]string{"foo": []string{"bar"}} in := []reflect.Value{reflect.ValueOf(m)} myMethod.Call(in)</code>
이 줄은 다음을 생성합니다. 이를 Reflect.Value로 변환하고 이를 함수 호출의 유일한 인수로 전달합니다.
위 내용은 Reflect 패키지의 .Call 함수에 매개변수를 올바르게 전달하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!