猿问

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

我有两个数据元素,如


"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


}


任何帮助都非常感谢。


慕娘9325324
浏览 187回答 1
1回答

12345678_0001

Go 没有元组语法,也许你想要这样的东西:stringTuple{value, b[index]}由于 是 一个结构,这是初始化其字段;您还可以显式提供字段名称,如下所示:stringTuplestringTuple{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}
随时随地看视频慕课网APP

相关分类

Go
我要回答