go语言的net包中Contains的用法
时间: 2023-07-07 09:31:28 浏览: 206
`Contains` 是 `net` 包中的一个函数,用于判断一个 IP 地址是否包含在一个 IP 地址块中。函数签名如下:
```go
func (n *IPNet) Contains(ip IP) bool
```
其中 `n` 是一个 `*net.IPNet` 类型的指针,表示一个 IP 地址块,`ip` 是一个 `net.IP` 类型的值,表示一个 IP 地址。函数返回一个 `bool` 类型的值,表示该 IP 地址是否包含在该 IP 地址块中。
示例代码如下:
```go
package main
import (
"fmt"
"net"
)
func main() {
ip := net.ParseIP("192.168.1.100")
ipNet := &net.IPNet{
IP: net.ParseIP("192.168.1.0"),
Mask: net.CIDRMask(24, 32),
}
if ipNet.Contains(ip) {
fmt.Println("IP address is within the subnet")
} else {
fmt.Println("IP address is not within the subnet")
}
}
```
在上面的示例代码中,我们创建了一个 IP 地址块 `ipNet`,它的 IP 地址为 `192.168.1.0`,掩码为 `255.255.255.0`,表示一个子网段。然后我们创建了一个 IP 地址 `ip`,它的值为 `192.168.1.100`,表示一个主机地址。我们使用 `Contains` 函数判断该主机地址是否包含在子网段中,如果是,则输出 `IP address is within the subnet`,否则输出 `IP address is not within the subnet`。
阅读全文