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