>백엔드 개발 >Golang >Reflection이 Go의 값에서 변수 이름을 검색할 수 있나요?

Reflection이 Go의 값에서 변수 이름을 검색할 수 있나요?

Barbara Streisand
Barbara Streisand원래의
2024-11-26 11:45:111031검색

Can Reflection Retrieve a Variable's Name from Its Value in Go?

값에서 변수 이름을 검색할 수 있나요?

질문: 템플릿 시스템의 맥락에서 변수의 이름을 어떻게 얻을 수 있나요? 리플렉션을 사용하여 그 값에만 기반한 이름을 지정하시겠습니까? 이렇게 하면 템플릿의 자리 표시자 값을 실제 변수 이름으로 바꿀 수 있습니다.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.