最近有一个需求, 给定一个ip地址字符串, 需要判断是否为一个网段里的地址
netip这个库完美的符合我们的需求
第一个API: MustParseAddr
这里传一个字符串, 会返回一个netip.Addr结构体
比如我们传入10.0.0.1
第二个API: MustParsePrefix
这里也是传一个字符串, 会返回一个netip.Prefix
比如我们传入10.0.0.0/27
第三个API: netip.Prefix.Contains
这里需要传入一个netip.Addr结构体, 返回一个布尔值, 判断本网段是否包含传入的地址
完整代码
package main
import (
"fmt"
"net/netip"
)
func main() {
ip1 := "10.0.0.33"
ip2 := "10.0.0.30"
netPrefixStr := "10.0.0.1/27"
netPrefix := netip.MustParsePrefix(netPrefixStr)
ipAddr1 := netip.MustParseAddr(ip1)
ipAddr2 := netip.MustParseAddr(ip2)
fmt.Println(netPrefix.Contains(ipAddr1))
fmt.Println(netPrefix.Contains(ipAddr2))
}

可以看到输出的是true和false, 非常好用
发表回复