ホームページ > バックエンド開発 > Golang > GoでIPアドレスが特定の範囲内にあるかどうかを確認するにはどうすればよいですか?

GoでIPアドレスが特定の範囲内にあるかどうかを確認するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-11-26 01:53:09
オリジナル
522 人が閲覧しました

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

Go/GoLang での IP アドレス範囲の確認

Go で IP アドレスを操作する場合、指定されたアドレス範囲が指定されたかどうかを確認する必要がある場合があります。 IP アドレスは特定の範囲内にあります。このタスクは、Go の組み込み関数を使用して簡単かつ効率的に行うことができます。

IP アドレスが範囲内にあるかどうかを確認するには、次の手順に従います。

1. IP アドレスをバイトに変換:

net.ParseIP 関数を使用して、範囲の開始 IP アドレスと終了 IP アドレス、および入力 IP アドレスをバイト スライスに変換します。この関数は、IP アドレスのバイゲンディアン バイト スライス表現である IP タイプを返します。

2.バイト スライスの比較:

bytes.Compare を使用して、入力 IP アドレスと範囲の開始および終了 IP アドレスのバイト スライスを比較します。この関数は、バイト スライスの相対的な順序を示す整数を返します。

  • bytes.Compare(input, start) >= 0 の場合、入力 IP アドレスは、バイト スライスの開始点以上です。
  • bytes.Compare(input, end)

コード例:

次のコードは、bytes.Compare:

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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート