J'essaie de comprendre pourquoi je n'arrive pas à comparer deux net.Addr identiques.
D'après cet article, il semble que deux interfaces devraient pouvoir se comparer si elles ont le même type sous-jacent et que ce type peut être comparé. Dans l'exemple suivant, le type sous-jacent est net.UDPAdr. Il s'agit d'une structure contenant une chaîne, un int et un net.IP, qui est un alias de type de []byte.
Est-ce parce que les IP de découpage ne sont pas comparables ? Même si c'est le même type, la même longueur et le même contenu ?
Exemple :
https://go.dev/play/p/dIzRCTwBA4P
Votre exemple compare les valeurs renvoyées par deux appels à net.ResolveUDPAddr
. Mais si vous pensez à la signature de fonction :
Vous remarquerez que vous comparez en fait deux pointeurs ; ils sont comparables, mais pas égaux (vous comparez le pointeur ; pas la valeur vers laquelle il pointe).
Selon les go specs :
net.UDPAdr contient un net.IP
net.IP
这是一个 []byte
qui est un []octet
et donc non comparable.
Cet exemple d'extension peut vous aider.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!