可以使用 Go 语言中的 net 包来判断一个 IP 是否在给定的网段内。具体步骤如下:

  • 使用 net.ParseCIDR() 方法解析给定的网段,返回网段的 IP 地址和子网掩码。
  • 使用 net.ParseIP() 方法解析要判断的 IP 地址。
  • 使用 net.IPNet.Contains() 方法判断要判断的 IP 地址是否在网段内。

代码:

package main

import (
	"fmt"
	"net"
)

func main() {
	ip := net.ParseIP("192.168.0.1")
	_, ipNet, _ := net.ParseCIDR("192.168.0.0/31")

	if ipNet.Contains(ip) {
		fmt.Println("包含")
	} else {
		fmt.Println("不包含")
	}
	ip2 := net.ParseIP("192.168.0.254")

	if ipNet.Contains(ip2) {
		fmt.Println("包含")
	} else {
		fmt.Println("不包含")
	}
}

运行结果:

包含
不包含