[英]Golang get a string name of struct field
我想获取一个字段的字符串名称,就像在 C# 中可以做的那样:
if (x == null)
throw new ArgumentNullException(nameof(x));
在 GO 中,我有以下内容:
package main
type Test struct{
X int
Y string
}
func main() {
fmt.Println(nameof(Test.X))
}
我如何实现nameof
func?
我如何实现nameof func?
你不能。
幸运的是你不需要。 在编写代码时,您知道名称并且可以像nameof()
一样快地键入字符串文字。
(好吧,从技术上讲,您可以通过检查当前函数来查找调试符号,但这很复杂,并且可能不可移植并且取决于所使用的编译器版本。所以:不要尝试。)
假设你有这个结构
type User struct{
Id string
Name string
// etc
}
然后你可以有这样的东西:
query := fmt.Sprintf("select * from Users where %s like %s", nameof(User.Name), "foo")
显然在 go 中nameof
的名称不存在。 您可以将其替换为reflect.TypeOf(User.Name).Name()
这很有用,因为如果您在哪里修改数据库并将 Name 替换为 FirstName 和 LastName,那么您的代码将不再编译。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.