Go的标准库netip 使用

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


评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注