我有一段CIDR表示法的字符串。它们都是ipv4和ipv6,我需要将它们转换为net.IPNet类型。
我怎样才能在golang中这样做?
示例字符串:
192.168.1.1/24
fd04:3e42:4a4e:3381 :: / 64
答案 0 :(得分:3)
我不认为你想要铸造;相反,我认为你想要ParseCIDR
func ParseCIDR(s string) (IP, *IPNet, error)
答案 1 :(得分:3)
正如cnicutar所说,使用net.ParseCIDR
。
这是一个关于如何实际使用它的工作示例。
http://play.golang.org/p/Wtqy56LS2Y
package main
import (
"fmt"
"net"
)
func main() {
ipList := []string{"192.168.1.1/24", "fd04:3e42:4a4e:3381::/64"}
for i := 0; i < len(ipList); i += 1 {
ip, ipnet, err := net.ParseCIDR(ipList[i])
if err != nil {
fmt.Println("Error", ipList[i], err)
continue
}
fmt.Println(ipList[i], "-> ip:", ip, " net:", ipnet)
}
}