reflect 패키지 내에서 .Call 함수를 활용할 때는 필수 매개변수 형식을 준수하는 것이 중요합니다. 이 문서에서는 .Call 함수를 올바르게 사용하고 in 변수를 조작하여 대상 메서드에 맞게 조정하는 과정을 안내합니다.
제공된 샘플 코드에서:
params := "some map[string][]string" in := make([]reflect.Value,0) return_values := reflect.ValueOf(&controller_ref).MethodByName(action_name).Call(in)
in 변수는 빈 조각으로 초기화됩니다. 호출하려는 메소드는 map[string][]string 유형의 단일 매개변수를 예상하므로 슬라이스에는 이 맵을 보유하는 하나의 Reflect.Value 인스턴스가 포함되어야 합니다.
이 문제를 해결하려면 올바른 접근 방식은 다음과 같습니다. 맵을 생성한 다음 Reflect.ValueOf를 사용하여 이를 Reflect.Value로 변환합니다. 조정된 코드는 다음과 같습니다.
m := map[string][]string{"foo": []string{"bar"}} in := []reflect.Value{reflect.ValueOf(m)} return_values := reflect.ValueOf(&controller_ref).MethodByName(action_name).Call(in)
이 수정을 통해 in 변수는 맵을 대상 메서드에 올바르게 전달하여 원하는 함수 호출이 성공하도록 보장합니다. .
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3