5
paxPayment, ok = dataObject.(*entities.PassengerPayment)
这是在golang的铸造?
括号用于什么?我不确定这次任务中发生了什么。
你需要更多的细节来回答这个问题吗?
paxPayment, ok = dataObject.(*entities.PassengerPayment)
这是在golang的铸造?
括号用于什么?我不确定这次任务中发生了什么。
你需要更多的细节来回答这个问题吗?
这只是一个Type assertion。 A型断言可用于:
从规范引用:
对于接口类型的表达式
x
和类型T
,初级表达x.(T)
断言
x
不是nil
并且存储的值在x
是T
类型。符号x.(T)
被称为类型断言。更精确地,如果
T
不是接口类型,x.(T)
断言动态类型的x
是identical到类型T
。在这种情况下,T
必须implement(接口)类型x
;否则类型断言无效,因为x
不可能存储类型为T
的值。如果T
是接口类型,则x.(T)
声明动态类型x
实现接口T
。
更具体地说,你的例子是它的一个特殊形式,它也报告类型断言是否成立。如果不是,ok
将是false
,如果断言成立,ok
将是true
。
paxPayment = dataObject.(*entities.PassengerPayment)
如果哪个dataObject
不成立*entities.PassengerPayment
类型的值会产生恐慌:
这种特殊的形式从来不像形式恐慌。
它被称为[Type assertion](https://golang.org/ref/spec#Type_assertions)。 – icza
@icza做出答案。 – inf