問題:在範本系統的上下文中,如何取得變數的名稱名稱僅基於使用反射的值?這將允許我用實際的變數名稱替換模板中的佔位符值。
使用反射:
我嘗試使用反射來檢索變數名稱,但是我沒有成功。這是我嘗試過的程式碼:
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 包含變數的值,而不是變數名稱本身。為了實現用變數名稱取代佔位符的目標,建議使用映射而不是切片。映射可以將變數名稱與其值關聯起來,從而實現高效、準確的替換。
以上是Go 中的反射可以從變數的值中檢索變數的名稱嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!