python - Golang : Trying to create a name, 年龄元组,具有类似于 python 的 zip 功能

标签 python go

我有两个数据元素,如

"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/

相关文章:

go - 如何在 go 中测试验证 JWT 路由

go - 使用go静态文件服务器时如何自定义处理未找到的文件?

arrays - 如何处理 YAML 中给出的数组项以与 Go 中的结构关联?

Python CookieJar - 由 Google Analytics 设置的 Cookie

python - 如何从数据库生日字段和 date.today() 计算确切的年龄?

python - Tox virtualenv 混淆

go - 如何确定 fmt.Fscanf 消耗的空白数量?

python - 在 GAE(日历 API)的 Python 中解析来自 InsertCalendar 的原子响应

python - 如何在Python中随机化字符串并将其转换为列表

debugging - Elisp 调用具有不同结果的 Go 代码