Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go 操作字符串数组中的数据_Go - Fatal编程技术网

Go 操作字符串数组中的数据

Go 操作字符串数组中的数据,go,Go,我有一个字符串数组: var a [5]string a[0] = "red|apple|1" a[1] = "yellow|apple|3" a[2] = "red|apple|4" 我需要将数据转换为数组或映射或其他形式,但如果管道之间的第一个和第二个值相同,则应添加数字,因此我希望的输出为: var b [5]string a[0] = "red|apple|5" a[1] = "yellow|apple|3" 感谢您的帮助。您可以使用地图来实现这一点 var a [3]string

我有一个字符串数组:

var a [5]string
a[0] = "red|apple|1"
a[1] = "yellow|apple|3"
a[2] = "red|apple|4"
我需要将数据转换为数组或映射或其他形式,但如果管道之间的第一个和第二个值相同,则应添加数字,因此我希望的输出为:

var b [5]string
a[0] = "red|apple|5"
a[1] = "yellow|apple|3"

感谢您的帮助。

您可以使用地图来实现这一点

var a [3]string
a[0] = "red|apple|1"
a[1] = "yellow|apple|3"
a[2] = "red|apple|4"

b := make(map[string]int)

for _, s := range a {
    k := s[:len(s)-2]
    v := s[len(s)-1:]
    i, err:= strconv.Atoi(v) // please, check for errors
    if err != nil {
        fmt.Println("bad input")
        continue
    }
    b[k] += i
}

for k, v := range b {
    fmt.Println(k, v)
}
输出:

yellow|apple 3
red|apple 5

唯一的想法是分割字符串,将其转换为map,然后尝试添加值,但它涉及到太多的循环,所以我暂时放弃了,因为可能有更简单的实现方法