"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 맵 매개변수와 함께 `reflect.Call` 함수를 올바르게 사용하는 방법은 무엇입니까?

맵 매개변수와 함께 `reflect.Call` 함수를 올바르게 사용하는 방법은 무엇입니까?

2024-11-08에 게시됨
검색:144

How to Correctly Use the `reflect.Call` Function with a Map Parameter?

reflect 패키지의 .Call 사용 문제 해결

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