Golang获取结构字段的字符串名称

时间:2018-12-06 07:45:50

标签: go reflection

我想像在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功能?

1 个答案:

答案 0 :(得分:3)

  

如何实现nameof func?

你不能。

幸运的是您不需要。编写代码时,您会知道名称,并且可以像OptionalInt i = IntStream.rangeClosed(1,5) .filter(x-> x == 7) .findFirst(); System.out.print(i.getAsInt()); 一样快速键入字符串文字。

(好的,从技术上讲,您可以通过检查当前函数来查找调试符号,但这很复杂,并且可能不可移植,并且取决于所使用的编译器版本。因此:甚至不要尝试。)