Maison  >  Article  >  développement back-end  >  Pourquoi ne puis-je pas comparer net.Addr ?

Pourquoi ne puis-je pas comparer net.Addr ?

王林
王林avant
2024-02-12 14:36:05691parcourir

为什么我无法比较 net.Addr?

Contenu de la question

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

Workaround

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.IPnet.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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer