질문: 템플릿 시스템의 맥락에서 변수의 이름을 어떻게 얻을 수 있나요? 리플렉션을 사용하여 그 값에만 기반한 이름을 지정하시겠습니까? 이렇게 하면 템플릿의 자리 표시자 값을 실제 변수 이름으로 바꿀 수 있습니다.
Reflection 사용:
Reflection을 사용하여 변수 이름을 검색하려고 시도했지만 나는 성공하지 못했습니다. 제가 시도한 코드는 다음과 같습니다.
onevar := "something" other := "something else" var msg string sa := []string{onevar, other} for _, v := range sa { vName := reflect.TypeOf(v).Name() // Attempt to get the variable name vName = fmt.Sprintf("{{%s}}", vName) // Prefix the name with "{{" and "}}" msg = strings.Replace(msg, vName, v, -1) // Replace the placeholder with the actual value }
슬라이스 sa에는 변수 이름이 아닌 변수 값만 포함되어 있기 때문에 이 접근 방식은 원하는 결과를 얻지 못합니다.
답변:
이 시나리오에서는 리플렉션을 사용하여 변수 이름을 검색할 수 없습니다. 슬라이스 sa에는 변수 이름 자체가 아닌 변수 값이 포함됩니다. 자리 표시자를 변수 이름으로 바꾸는 목표를 달성하려면 슬라이스 대신 맵을 활용하는 것이 좋습니다. 맵은 변수 이름을 해당 값과 연관시켜 효율적이고 정확한 대체를 가능하게 합니다.
위 내용은 Reflection이 Go의 값에서 변수 이름을 검색할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!