我有两个数据元素,如
"bob julie mark mike"
和"20,30,40,50"
我把它们分开了,现在我试图实现返回一个 python:zip 类型的结果,如下所示[("bob", "20"), ("julie", "30"), ("mark", "40"), ("mike", "50)]
我已尝试使用以下代码,但出现错误 unexpected comma, expecting )
在线 namesAgesTuple[index] = stringTuple[(value, b[index])]
下面是完整的代码package main
import (
"fmt"
"strings"
)
type stringTuple struct {
names string
ages string
}
func main() {
var names string = "bob julie mark mike"
namesArray := strings.Split(names, " ")
fmt.Println(namesArray)
var ages string = "20,30,40,50"
agesArray := strings.Split(ages, ",")
fmt.Println(agesArray)
namesAges := make(map[string]string)
println(len(namesArray))
println(len(agesArray))
print(namesAges)
fmt.Println(zip(namesArray, agesArray))
}
func zip(a []string, b []string) ([]stringTuple, error) {
if len(a) != len(b) {
return nil, fmt.Errorf("zip: arguments length must be same ")
}
namesAgesTuple := make(map[int][]stringTuple)
for index, value := range a {
namesAgesTuple[index] = stringTuple[(value, b[index])]
}
fmt.Println(namesAgesTuple)
return namesAgesTuple, nil
}
非常感谢任何帮助。谢谢你。
最佳答案
Go 没有元组语法,也许你想要这样的东西:
stringTuple{value, b[index]}
自 stringTuple
是一个结构体,这是初始化它的字段;您还可以明确提供字段名称,如下所示:stringTuple{names: value, ages: b[index]}
您代码中的另一个问题是 namesAgesTuple
是来自 int
的 map 到一片 stringTuple
.但是该函数只返回一个 slice ,所以我不确定您为什么在那里使用 map 。我可能会写这样的代码( Go playground link ):
type stringTuple struct {
names string
ages string
}
func main() {
var names string = "bob julie mark mike"
namesArray := strings.Split(names, " ")
fmt.Println(namesArray)
var ages string = "20,30,40,50"
agesArray := strings.Split(ages, ",")
fmt.Println(agesArray)
fmt.Println(zip(namesArray, agesArray))
}
func zip(a []string, b []string) ([]stringTuple, error) {
if len(a) != len(b) {
return nil, fmt.Errorf("zip: arguments length must be same ")
}
var namesAges []stringTuple
for index, value := range a {
namesAges = append(namesAges, stringTuple{value, b[index]})
}
return namesAges, nil
}
关于python - Golang : Trying to create a name, 年龄元组,具有类似于 python 的 zip 功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66602777/