paxPayment, ok = dataObject.(*entities.PassengerPayment)
À quoi servent les supports? Je ne sais pas ce qui se passe dans cette opération d'affectation.
Avez-vous besoin de plus de détails pour répondre à cette question?
C'est un Type assertion . Une assertion de type peut être utilisée pour:
Citant de la spécification:
Pour une expression
x
de type interface et un typeT
, l'expression principalex.(T)
affirme que
x
n'est pasnil
et que la valeur stockée dansx
est de typeT
. La notationx.(T)
est appelée une assertion de type .Plus précisément, si
T
n'est pas un type d'interface,x.(T)
affirme que le type dynamique dex
est identique au typeT
. Dans ce cas,T
doit implémenter le type (interface) dex
; sinon l'assertion de type n'est pas valide car il n'est pas possible pourx
de stocker une valeur de typeT
. SiT
est un type d'interface,x.(T)
affirme que le type dynamique dex
implémente l'interfaceT
.
Plus précisément, votre exemple en est une forme spéciale qui indique également si l'assertion de type est valable. Sinon, ok
sera false
, et si l'assertion est vraie, ok
sera true
.
Cette forme spéciale ne panique jamais contrairement à la forme de:
paxPayment = dataObject.(*entities.PassengerPayment)
Ce qui si dataObject
ne contient pas de valeur de type *entities.PassengerPayment
Paniquera.