Maison > Article > développement back-end > Comment vérifier efficacement si une adresse IP se situe dans une plage en Go ?
Vérification rapide de la plage IP dans Go
Dans Go, déterminer efficacement si une adresse IP se situe dans une plage spécifiée est crucial pour la gestion du réseau et tâches de sécurité. Cet article explore l'approche la plus rapide pour relever ce défi.
Le moyen efficace de vérifier si une adresse IP se trouve dans une plage spécifique est de la comparer aux points de terminaison de la plage à l'aide de la fonction bytes.Compare. Les adresses IP sont représentées sous forme de tranches d'octets bigendiennes dans Go, ce qui rend cette comparaison précise.
L'exemple de code ci-dessous illustre cette approche :
package main import ( "bytes" "fmt" "net" ) var ( ip1 = net.ParseIP("216.14.49.184") ip2 = net.ParseIP("216.14.49.191") ) func check(ip string) bool { trial := net.ParseIP(ip) if trial.To4() == nil { fmt.Printf("%v is not an IPv4 address\n", trial) return false } if bytes.Compare(trial, ip1) >= 0 && bytes.Compare(trial, ip2) <= 0 { fmt.Printf("%v is between %v and %v\n", trial, ip1, ip2) return true } fmt.Printf("%v is NOT between %v and %v\n", trial, ip1, ip2) return false } func main() { check("1.2.3.4") check("216.14.49.185") check("1::16") }
Ce code produit le résultat suivant :
1.2.3.4 is NOT between 216.14.49.184 and 216.14.49.191 216.14.49.185 is between 216.14.49.184 and 216.14.49.191 1::16 is not an IPv4 address
En résumé, utiliser bytes.Compare pour comparer les adresses IP dans les contrôles de plage est la méthode la plus efficace dans Go, permettant une analyse précise et rapide. déterminations.
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!