最近有一个需求, 给定一个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, 非常好用
发表回复