pointers - 如何使用反射获取字符串指针的变量名?
问题描述
我想通过使用反射来获取字段名称的名称。我将字符串作为指针传递,然后我想在函数中检索变量名。
type FooBar struct {
foo *string
}
func bar(s *string) {
var name string
// TODO: Get name of the field that s is pointing to!
fmt.Println("Expected string is foo: " + name)
}
func main() {
f := Foo{"bar"}
bar(f.s)
}
我试着用
val := reflect.ValueOf(s)
然后我无法获得变量名。
我应该提到我的结构中有多个字段,我事先不知道哪个字段有问题。
任何帮助表示赞赏。谢谢
解决方案
你不能做这个。
当您编写时,f.s
您所拥有的只是一个指向字符串的指针。某些结构中的某些字段恰好将其作为值的信息完全丢失/不可用。
我不会在这里推荐 package unsafe:你必须重新设计。
推荐阅读
- java - 新活动未开始
- bash - 在导入语句后添加一行
- sql-server - 不使用 ODBC 的 SAS SQL Server 连接
- php - 如何从 PHP 条件更新 HTML DIV
- spring - 当这个 Spring 存储库作为依赖项导入另一个项目时,为什么我会在它上看到不同的行为?
- pyspark - PySpark DataFrame 根据其他列中的值乘以列
- javascript - 如何使用简单的 JavaScript 或 jQuery 在浏览器中初始化 Microsoft Monaco 编辑器
- google-sheets - 如何从消除了循环冗余的列表中生成排列表?
- r - 如何模拟 50 个随机样本并计算每个样本的均值和方差
- node.js - 如何将 JS 中的字符/字符串转换为 uint8?