Go에서는 유형 이름만 문자열로 사용할 수 있는 경우 객체를 인스턴스화하는 것이 간단하지 않습니다. 이는 Go가 정적으로 입력되어 연결 중에 사용되지 않는 코드를 제거하기 때문입니다.
Reflection 사용
제약 조건에도 불구하고 Reflection을 사용하여 인스턴스를 동적으로 생성할 수 있습니다. 프로세스는 다음과 같습니다.
코드 예:
import ( "fmt" "reflect" ) // Global map for type lookup var typeMap = make(map[string]reflect.Type) func init() { // Initialize typeMap by adding types to it typeMap["MyStruct"] = reflect.TypeOf(MyStruct{}) } func main() { typeName := "MyStruct" t := typeMap[typeName] instance := reflect.New(t).Elem().Interface() fmt.Println(instance) }
대체 접근 방식
반영 외에도 다음을 고려하세요. 대안:
참고: 이러한 접근 방식은 리플렉션의 복잡성을 피하고 잠재적으로 컴파일 중 오류 처리를 향상시킵니다.
위 내용은 유형 이름만 문자열로 사용하여 Go 인스턴스를 어떻게 만들 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!