【发布时间】:2015-10-01 11:36:08
【问题描述】:
paxPayment, ok = dataObject.(*entities.PassengerPayment)
括号是干什么用的?我不确定这个赋值操作发生了什么。
您需要更多详细信息来回答这个问题吗?
【问题讨论】:
标签: go types type-conversion
paxPayment, ok = dataObject.(*entities.PassengerPayment)
括号是干什么用的?我不确定这个赋值操作发生了什么。
您需要更多详细信息来回答这个问题吗?
【问题讨论】:
标签: go types type-conversion
这是一个Type assertion。类型断言可用于:
引用规范:
对于接口类型的表达式
x和类型T,主表达式x.(T)断言
x不是nil并且存储在x中的值是T类型。符号x.(T)称为类型断言。更准确地说,如果
T不是接口类型,x.(T)断言x的动态类型是identical 类型T。在这种情况下,T必须是implementx的(接口)类型;否则类型断言无效,因为x不可能存储T类型的值。如果T是接口类型,x.(T)断言x的动态类型实现了接口T。
更具体地说,您的示例是它的一种特殊形式,它还报告类型断言是否成立。如果不是,ok 将是 false,如果断言成立,ok 将是 true。
这种特殊的形式从不恐慌,不像:
paxPayment = dataObject.(*entities.PassengerPayment)
如果dataObject 不包含*entities.PassengerPayment 类型的值,则会出现恐慌。
【讨论】: