Menentukan sama ada alamat IP berada dalam julat yang ditentukan ialah keperluan biasa dalam aplikasi rangkaian. Dalam Go/GoLang, ini boleh dicapai dengan cekap menggunakan perwakilan angka yang wujud bagi alamat IP.
Untuk mewakili alamat IP, Go menggunakan kepingan bait bigendian, menyediakan kaedah yang sesuai untuk perbandingan menggunakan bait.Bandingkan. Pendekatan ini menghapuskan keperluan untuk penghuraian rentetan atau ungkapan biasa yang kompleks.
Pertimbangkan julat IP yang ditakrifkan sebagai 216.14.49.184 hingga 216.14.49.191. Untuk mengesahkan sama ada alamat IP input, seperti 216.14.49.185, tergolong dalam julat ini, kami boleh memanfaatkan kod berikut:
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") }
Skrip ini menunjukkan kecekapan pendekatan ini, mengesahkan dan mengelaskan alamat IP dengan kemudahan:
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
Kesimpulannya, kaedah ini menyediakan cara yang diperkemas dan cekap untuk mengesahkan alamat IP terhadap julat tertentu dalam Go/GoLang, alat yang tidak ternilai untuk aplikasi rangkaian.
Atas ialah kandungan terperinci Bagaimana untuk Mengesahkan Julat IP dengan Cekap dalam Go/GoLang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!