为了账号安全,请及时绑定邮箱和手机立即绑定

Golang:尝试创建一个名称,年龄元组,具有类似于python的zip功能

Golang:尝试创建一个名称,年龄元组,具有类似于python的zip功能

Go
慕娘9325324 2022-08-15 17:06:38
我有两个数据元素,如"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 mainimport (    "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}任何帮助都非常感谢。
查看完整描述

1 回答

?
12345678_0001

TA贡献1802条经验 获得超5个赞

Go 没有元组语法,也许你想要这样的东西:


stringTuple{value, b[index]}

由于 是 一个结构,这是初始化其字段;您还可以显式提供字段名称,如下所示:stringTuple


stringTuple{names: value, ages: b[index]}

代码中的另一个问题是 从 到 切片的映射。但是该函数只返回一个切片,所以我不确定为什么你在那里使用地图。namesAgesTupleintstringTuple


我可能会把代码写成这样(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

}


查看完整回答
反对 回复 2022-08-15
  • 1 回答
  • 0 关注
  • 155 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号