编辑代码

package main

import (
	"fmt"
	"net"
)

// generateIPList 生成从 startIP 到 endIP 的所有IP地址的列表
func generateIPList(startIP, endIP string) ([]string, error) {
	start := net.ParseIP(startIP)
	end := net.ParseIP(endIP)
	if start == nil || end == nil {
		return nil, fmt.Errorf("invalid IP format")
	}

	var ips []string
	for ip := start; !ip.Equal(end); ip = incIP(ip) {
		ips = append(ips, ip.String())
	}
	ips = append(ips, end.String()) // 包含结束IP

	return ips, nil
}

// incIP 增加IP地址的最后一位
func incIP(ip net.IP) net.IP {
	inc := make(net.IP, len(ip))
	copy(inc, ip)

	for i := len(inc) - 1; i >= 0; i-- {
		inc[i]++
		if inc[i] != 0 {
			break
		}
	}

	return inc
}

func main() {
	startIP := "192.168.1.1"
	endIP := "192.168.1.120"

	ipList, err := generateIPList(startIP, endIP)
	if err != nil {
		fmt.Println("Error generating IP list:", err)
		return
	}

	for _, ip := range ipList {
		fmt.Println(ip)
	}
}