IP アドレスが指定された範囲内にあるかどうかを判断することは、ネットワーク アプリケーションの一般的な要件です。 Go/GoLang では、これは IP アドレスの固有の数値表現を使用して効率的に実現できます。
IP アドレスを表現するために、Go はバイジェンディアン バイト スライスを利用し、bytes.Compare を使用した比較のための便利な方法を提供します。このアプローチにより、文字列解析や複雑な正規表現が不要になります。
IP 範囲が 216.14.49.184 ~ 216.14.49.191 として定義されていると考えてください。 216.14.49.185 などの入力 IP アドレスがこの範囲に属しているかどうかを検証するには、次のコードを利用できます。
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") }
このスクリプトは、このアプローチの効率性を示し、次の方法で IP アドレスを検証および分類します。 easy:
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
結論として、この方法は、ネットワーキング アプリケーションにとって貴重なツールである Go/GoLang の指定された範囲に対して IP アドレスを検証する合理的かつ効率的な手段を提供します。
以上がGo/GoLang で IP 範囲を効率的に検証するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。