Go 将字符串切片的输出解析为另一个字符串切片

Go 将字符串切片的输出解析为另一个字符串切片,go,Go,我的意见是 [v=spf1 ip4:35.190.247.0/24 ip4:64.233.160.0/19 ip4:2.44.5.76/32 ~all] 这是一种 []string 其中的元素数量是 1 我的目标是解析这个切片,以便我的输出是stringslice类型,但只包含IP,并且每个IP是切片中的一个单独元素 输出应该是 [35.190.247.0/24 64.233.160.0/19 2.44.5.76/32] 类型应该是 []string 3 元素的数量应该是 []str

我的意见是

[v=spf1 ip4:35.190.247.0/24 ip4:64.233.160.0/19 ip4:2.44.5.76/32 ~all]
这是一种

[]string
其中的元素数量是

1
我的目标是解析这个切片,以便我的输出是stringslice类型,但只包含IP,并且每个IP是切片中的一个单独元素

输出应该是

[35.190.247.0/24 64.233.160.0/19 2.44.5.76/32]
类型应该是

[]string
3
元素的数量应该是

[]string
3
因此,我要做的是首先更换
v=spf1 ip4:

j := strings.Replace(t.Txt[0], "v=spf1 ", "", -1)
k := strings.Replace(j, "ip4:", "", -1)
l := strings.Replace(j, "~all", "", -1)
这给了我

35.190.247.0/24 64.233.160.0/19 2.44.5.76/32
类型

string
然后我想做的是用一个空格作为分隔符遍历所有的IP,并将每个IP作为一个单独的字符串打印在新行上

for i, word := range l {
    fmt.Println(word)
}
而不是

0 35.190.247.0/24 
1 64.233.160.0/19 
2 2.44.5.76/32
我越来越

0 51
1 53
2 46
3 49
4 57
5 48
6 46

这里有什么问题?我无法通过使用
范围l
来理解它,您正在迭代字符串的符文。在您的情况下,这些只是ip地址的ASCII码

您离解决方案不远:

j:=strings.Replace(t.Txt[0],“v=spf1”,“”,-1)
k:=字符串。替换(j,“ip4:”,“”,-1)

l:=strings.Replace(j,“~all”,”“,-1)//在字符串上进行测距会得到符文,而不是“单词”。尝试使用
字符串。拆分
。见此处的范围表达式表: