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

Pourquoi ne puis-je pas comparer net.Addr ?

王林
Libérer: 2024-02-12 14:36:05
avant
759 Les gens l'ont consulté

为什么我无法比较 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!

source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal