paxPayment, ok = dataObject.(*entities.PassengerPayment)
括号用于什么用途?我不确定此分配操作中发生了什么。
您是否需要更多详细信息来回答这个问题?
这是一个类型断言。类型断言可用于:
引用规范:
对于
x
接口类型和类型T
的表达式,主要表达式x.(T)
断言
x
不是,nil
并且存储的值x
是typeT
。该符号x.(T)
称为 类型断言 。更精确地,如果
T
不是一个接口类型,x.(T)
断言,动态型的x
是相同的类型T
。在这种情况下,T
必须实现的(接口)类型x
;否则类型断言无效,因为无法x
存储type的值T
。如果T
为接口类型,x.(T)
则断言动态类型的x
实现接口T
。
更具体地说,您的示例是它的一种特殊形式,它还报告类型断言是否成立。如果不是,ok
将是false
,如果断言成立,ok
将是true
。
与以下形式不同,这种特殊形式永远不会惊慌:
paxPayment = dataObject.(*entities.PassengerPayment)
如果dataObject
不持有type值,*entities.PassengerPayment
则会感到恐慌。