golang 将字符串转换为 net.IPNet 类型

lit*_*cky 6 casting go

我有一段使用 CIDR 表示法的字符串。它们都是 ipv4 和 ipv6,我需要将它们转换为 net.IPNet 类型。

我将如何在 golang 中做到这一点?

示例字符串:

192.168.1.1/24
fd04:3e42:4a4e:3381::/64

fab*_*ioM 6

正如 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)
    }
}
Run Code Online (Sandbox Code Playgroud)


cni*_*tar 5

我不认为你想要选角;相反,我认为你想要ParseCIDR

func ParseCIDR(s string) (IP, *IPNet, error)
Run Code Online (Sandbox Code Playgroud)