这是在golang的铸造?
paxPayment, ok = dataObject.(*entities.PassengerPayment)
括号用于什么? 我不确定这次作业是怎么回事。
你需要更多的细节来回答这个问题吗?
这只是一个types断言 。 types断言可以用来:
- 从接口types的值中获取具体types的值
- 或者获得不同于初始types的接口types的值(具有不同方法集合的接口,实际上不是原始子集的子集,因为这可以简单地通过简单的types转换来获得)。
引用规范:
对于接口types的expression式
x
和typesT
,主expression式x.(T)
断言
x
不是nil
,存储在x
中的值是typesT
符号x.(T)
被称为types断言 。更确切地说,如果
T
不是接口types,则x.(T)
断言x
的dynamictypes与T
types相同 。 在这种情况下,T
必须实现x
的(接口)types; 否则types断言是无效的,因为x
不能存储typesT
的值。 如果T
是接口types,则x.(T)
断言x
的dynamictypes实现了接口T
更具体地说,你的例子是一个特殊的forms,它也报告types断言是否成立。 如果没有, ok
将是false
,如果断言成立, ok
将是true
。
这种特殊的forms永远不会恐慌不像以下forms:
paxPayment = dataObject.(*entities.PassengerPayment)
如果dataObject
不包含types*entities.PassengerPayment
的值将会恐慌。