golang에 MVC를 구현하고 싶습니다. 그러나 내가 원하는 것을 성취하는 것이 어려워 보인다. Testcontroller.go에 제가 있습니다..golang에서 문자열에 따라 differenct 유형을 인스턴스화 할 수 있습니까?
func (c *TestController) Test() {
//
}
func (c *TestController) Index() {
//
}
전용 제어기로, 그 기능을 실행 reflect.ValueOf (TestController {}) MethodByName() 호출()를 사용할 수있다. 이제 다른 컨트롤러를 추가하고 싶습니다.
controllerName := strings.Split(r.URL.Path, "/")
controller = reflect.ValueOf(controllerName[1])
나는이 totaly 잘못 알고,하지만 난 컨트롤러 명을 "테스트"== 경우 TestController 인스턴스를 가져오고 인 IndexController 인스턴스를 얻을 수 있기를 바랍니다 :하지만 다른 문자열로 내가 할 수있는 새로운 것은 다른 인스턴스처럼 보인다 컨트롤러 이름 == "인덱스"인 경우 반영을 사용하면 원하는 것을 얻을 수없는 것처럼 보입니다. 할 수있는 방법이 있습니까? 대단히 감사합니다!
당신은 항상 사용할 수있는 경우, 그렇지 않은/스위치 문 (들). – ThinkChaos
그건 좋은 선택이 아니야. –
나는 인터페이스를 사용할 것이다 : 그리고 인터페이스는지도 나 다른 것들에 색인을 붙일 수있는 이름으로 컨트롤러를 식별한다. (숫자가 매우 적 으면 단순히 스캔하는 것이 더 효율적 일지 모르지만 그들 모두). 함수를 호출 할 때는 반영을 사용할 수 있습니다. –