繁体   English   中英

Golang 获取struct字段的字符串名称

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM