Die Feststellung, ob eine IP-Adresse in einen bestimmten Bereich fällt, ist eine häufige Anforderung in Netzwerkanwendungen. In Go/GoLang kann dies effizient durch die inhärente numerische Darstellung von IP-Adressen erreicht werden.
Zur Darstellung von IP-Adressen verwendet Go Bigendian-Byte-Slices und bietet damit eine praktische Vergleichsmethode mit bytes.Compare. Dieser Ansatz macht das Parsen von Zeichenfolgen oder komplexe reguläre Ausdrücke überflüssig.
Stellen Sie sich einen IP-Bereich vor, der als 216.14.49.184 bis 216.14.49.191 definiert ist. Um zu überprüfen, ob eine eingegebene IP-Adresse wie 216.14.49.185 zu diesem Bereich gehört, können wir den folgenden Code nutzen:
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") }
Dieses Skript demonstriert die Effizienz dieses Ansatzes, bei dem IP-Adressen validiert und klassifiziert werden Leichtigkeit:
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
Zusammenfassend lässt sich sagen, dass diese Methode eine optimierte und effiziente Möglichkeit zur Validierung von IP-Adressen anhand eines bestimmten Bereichs bietet Go/GoLang, ein unschätzbar wertvolles Tool für Netzwerkanwendungen.
Das obige ist der detaillierte Inhalt vonWie kann man IP-Bereiche in Go/GoLang effizient validieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!