Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Memeriksa dengan Cekap sama ada Alamat IP berada dalam Julat dalam Go?

Bagaimana untuk Memeriksa dengan Cekap sama ada Alamat IP berada dalam Julat dalam Go?

DDD
DDDasal
2024-11-11 15:20:03876semak imbas

How to Efficiently Check if an IP Address is Within a Range in Go?

Menyemak Alamat IP dalam Julat Secara Cekap dalam Go

Menentukan sama ada alamat IP berada dalam julat tertentu ialah keperluan biasa dalam pelbagai rangkaian operasi. Dalam Go, terdapat beberapa pendekatan untuk menangani tugasan ini.

Kaedah Terpantas: bait.Bandingkan

Salah satu kaedah yang paling berkesan ialah menggunakan bait.Bandingkan fungsi untuk membandingkan perwakilan bait alamat IP.

import (
    "bytes"
    "net"
)

// Check if an IP address is within a range
func check(trial, start, end net.IP) bool {
    if start.To4() == nil || end.To4() == nil || trial.To4() == nil {
        return false
    }
    return bytes.Compare(trial, start) >= 0 && bytes.Compare(trial, end) <= 0
}

Dalam pendekatan ini, kami mula-mula menyemak sama ada alamat IP yang diberikan adalah alamat IPv4 yang sah. Kami kemudian menggunakan bait.Bandingkan untuk membandingkan perwakilan bait IP percubaan dan titik mula dan akhir julat. Jika perbandingan menghasilkan nilai bukan negatif untuk kedua-dua semakan, ini menandakan bahawa alamat IP berada dalam julat.

Contoh Penggunaan

Kod berikut menunjukkan penggunaan bait.Bandingkan kaedah:

import (
    "fmt"
    "net"
)

var (
    ip1 = net.ParseIP("216.14.49.184")
    ip2 = net.ParseIP("216.14.49.191")
)

func main() {
    check := func(ip string) {
        trial := net.ParseIP(ip)
        res := check(trial, ip1, ip2)
        fmt.Printf("%v is %v within range %v to %v\n", trial, res, ip1, ip2)
    }
    check("1.2.3.4")
    check("216.14.49.185")
    check("216.14.49.191")
}

Output:

1.2.3.4 is false within range 216.14.49.184 to 216.14.49.191
216.14.49.185 is true within range 216.14.49.184 to 216.14.49.191
216.14.49.191 is true within range 216.14.49.184 to 216.14.49.191

Atas ialah kandungan terperinci Bagaimana untuk Memeriksa dengan Cekap sama ada Alamat IP berada dalam Julat dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn