我正在尝试将接口动态地转换回其原始结构,但在转换后访问结构的属性时遇到问题。
以下面的代码为例。
我希望能够将3种已知结构类型之一传递给我的函数。 然后找出传入的结构类型以对它进行断言。 最后,我希望能够访问类似属性。
基本上,我想在我的结构中拥有一些基本的继承,但是到目前为止,似乎不可能随时进行此操作。 我看到一些文章提到使用接口继承,但是我的结构没有方法,所以我不确定如何使用接口。
这样的事情可能发生吗?
I would like to be able to pass in one of 3 known struct types into my function. Then figure out which struct type was passed in to type assert it. Finally I want to be able to access like attributes.
您可以使用类型断言来做到这一点。 基本思想是,在任何情况下,类型开关都只需使用类型断言来获取相应类型的具体实例,然后您就可以调用所需的任何属性。
看下面的例子
操场
代码中的函数structTest(val interface {})似乎是松散键入的。 您将其传递给无类型参数,并期望它满足某些条件(将具有字段A),在任何类型的语言中它看起来都很奇怪。
在我看来,使用接口,这种多态性在Go中可以表达为
操场