Nouveau ici - j'ai rencontré le bout de code Go suivant que je n'ai pas écrit
if tc, ok := tng.(ThingClasser); ok {
//... faire quelque chose ...
}
Je ne comprendrai pas la sémantique de tng.(ThingClasser)
.
À certains égards, cela ressemble à un appel de méthode - c'est-à-dire qu'il y a deux variables (tc
, ok
) prêtes à accepter des valeurs de retour multiples.
Cependant, tng.(ThingClasser)
lui-même semble être un accès à une propriété, pas un appel de méthode.
Cependant, les parenthèses autour de ThingClasser
sont une subtilité que je n'ai jamais vue auparavant. De plus, si cela importe, le symbole ThingClasser
est défini ailleurs dans ce projet en tant qu'interface, donc je pense peut-être que c'est un peu de sucre syntaxique autour de un est-ce que cela implémente une interface - mais alors les deux valeurs de retour m'ont confus.
Google n'a rien donné de concret, mais c'est l'une de ces choses difficiles à rechercher sur Google.
Est-ce que quelqu'un ici sait ce qu'est cet appel/syntaxe en GoLang, et pourrait éventuellement me diriger vers les pages manuel pertinentes pour que je puisse RTFM?