Home > Backend Development > Golang > How Can I Retrieve Variable Names from Source Code Using Reflection for Templating?

How Can I Retrieve Variable Names from Source Code Using Reflection for Templating?

DDD
Release: 2024-12-03 17:35:11
Original
901 people have browsed it

How Can I Retrieve Variable Names from Source Code Using Reflection for Templating?

Variable Name Retrieval Using Reflection

In an attempt to construct a user-friendly templating system, the question arises: how can the variable name be obtained as it appears in the source code using reflection?

The goal is to create a slice of variables (strings) and iterate through it, replacing markup {{}} placeholders with actual variable values. For instance, if the variable name is onevar, the system should scan the template for {{onevar}} and replace it with the variable's value.

This task involves understanding the nature of reflection when dealing with variables. In the provided code snippet:

onevar := "something"
other := "something else"

var msg string
sa := []string{onevar, other}
for _, v := range sa {
    vName := reflect.TypeOf(v).Name()
    vName = fmt.Sprintf("{{%s}}", vName)
    msg = strings.Replace(msg, vName, v, -1)
}
Copy after login

The code attempts to retrieve the variable name by utilizing reflection:

vName := reflect.TypeOf(v).Name()
Copy after login

However, this approach is unsuccessful because a slice contains values, not variables. Therefore, obtaining the variable name from a slice proves impossible.

Solution:
To address this issue, consider using a map instead of a slice, as maps associate keys (variable names) with values:

vars := map[string]string{
    "onevar": "something",
    "other": "something else",
}

var msg string
for name, value := range vars {
    vName := fmt.Sprintf("{{%s}}", name)
    msg = strings.Replace(msg, vName, value, -1)
}
Copy after login

The above is the detailed content of How Can I Retrieve Variable Names from Source Code Using Reflection for Templating?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template