📌  相关文章
📜  golang 检查 ip 是否为 v6 - Go 编程语言 - Go 编程语言(1)

📅  最后修改于: 2023-12-03 15:01:02.300000             🧑  作者: Mango

Golang检查IP是否为v6

在Golang中,可以使用net包中的ParseIP()函数来检查IP地址是否为IPv6地址。下面是一个示例代码:

package main

import (
    "fmt"
    "net"
)

func main() {
    ip := "2001:db8::1" // IPv6 address
    parsedIP := net.ParseIP(ip)
    if parsedIP == nil {
        fmt.Println("Invalid IP address")
    } else if parsedIP.To4() != nil {
        fmt.Println("Not an IPv6 address")
    } else {
        fmt.Println("IPv6 address")
    }
}

代码解释:

  1. 定义一个IPv6地址变量ip
  2. 使用ParseIP()函数解析IP地址,并将结果存储在parsedIP变量中。
  3. 如果parsedIPnil,则表示解析失败,输出“Invalid IP address”。
  4. 如果parsedIPTo4()方法不为nil,则表示IP地址为IPv4地址。由于IPv4地址长度为4字节,所以To4()方法返回nil表示IPv6地址。因此,输出“Not an IPv6 address”。
  5. 如果以上条件都不满足,则表明IP地址为IPv6地址。输出“IPv6 address”。

以上代码的输出应该是“IPv6 address”。

注意:net.ParseIP()函数也可以用来检查IPv4地址,只需要将IPv4地址作为入参。如果解析成功,返回的IP地址是net.IP类型。如果解析失败,返回nil