在Go/GoLang 中檢查IP 位址範圍
在Go 中使用IP 位址時,您可能會遇到需要確定是否給定IP 位址屬於特定範圍。透過 Go 的內建函數,此任務變得簡單且有效率。
要檢查IP 位址是否在某個範圍內,請依照下列步驟操作:
1.將IP 位址轉換為位元組:
使用net.ParseIP 函數將範圍起始和結束IP 位址以及輸入IP 位址轉換為位元組切片。此函數傳回一個 IP 類型,它是 IP 位址的 bigendian 位元組切片表示形式。
2.比較位元組片:
使用 bytes.Compare 比較輸入 IP 位址和範圍起始和結束 IP 位址的位元組片。此函數傳回一個整數,指示位元組切片的相對順序:
範例程式碼:
以下程式碼示範如何使用位元組檢查 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 位址。如果它不是有效的 IPv4 位址,則會傳回錯誤訊息。否則,它使用 bytes.Compare 將輸入 IP 位址的位元組片與範圍的起始和結束 IP 位址進行比較。然後列印結果並傳回布林值,指示輸入的 IP 位址是否在範圍內。
透過利用 bytes.Compare,Go 提供了一種高效且直接的方法來檢查 IP 位址是否在指定範圍內,使其成為 IP 位址操作任務的寶貴工具。
以上是Go中如何檢查IP位址是否在特定範圍內?的詳細內容。更多資訊請關注PHP中文網其他相關文章!