我正在尝试通过以下方式获取IP地址和子网掩码

ifaces, err := net.Interfaces()
for _, iface := range ifaces{
        localip, _ = iface.Addrs()
}

但是,我期待将子网作为类似于255.255.255.0而不是/24的东西来获得。我该怎么办?如果没有模块可以执行此操作,那么作为程序执行此操作的逻辑是什么?

最佳答案

使用逻辑运算符从某些stackoverflow帖子本身借来的。

mask = (0xFFFFFFFF << (32 - 24)) & 0xFFFFFFFF; //24 is the netmask
var dmask uint64
dmask = 32
localmask := make([]uint64, 0, 4)
for i := 1; i <= 4; i++{
    tmp := mask >> (dmask - 8) & 0xFF
    localmask = append(localmask, tmp)
    dmask -= 8
}

fmt.Println(localmask)

10-07 19:32