gpt4 book ai didi

go - 将 slice 转换为元组的便捷函数?

转载 作者:IT王子 更新时间:2023-10-29 02:06:15 26 4
gpt4 key购买 nike

在 Python 中,可以编写这样的代码,从列表中分配多个值:

(a, b, c, d) = [1,2,3,4]

slice 有没有类似的一套Go库函数?也就是说,我可以这样做: http://play.golang.org/p/DY1Bi5omm1

package main

func get3(s []interface{}) (
a interface{},
b interface{},
c interface{},
rest []interface{}) {
return s[0],s[1],s[2],s[4:]
}

func main() {
s := make([]interface{},5);
for i :=0 ; i < 5; i++ { s[i] = i}
a,b,c,_ := get3(s)

print(a.(int))
print(b.(int))
print(c.(int))
}

是否有标准的 gophery 方法可以做到这一点?

是否有解决界面丑陋问题的方法?

最佳答案

我不认为你可以,至少不能以惯用/干净的方式。您可以进行多项分配,但您必须直接或使用闭包传递单个值:

package main

import (
"fmt"
)

func valuesFromList(list[]int,startFrom int) func() int {
i:=startFrom
return func() int {
ret := list[i]
i++
return ret
}
}


func main () {
list := []int{0,1,2,3,4,5,6,7,8,9}
yield := valuesFromList(list,5)

//This works
a,b,c := yield(),yield(),yield()
fmt.Println(a)
fmt.Println(b)
fmt.Println(c)

//This also works
d,e,f := list[0],list[1],list[2]
fmt.Println(d)
fmt.Println(e)
fmt.Println(f)
//This won't work
//g,h,i:= list[7:9]
}

关于go - 将 slice 转换为元组的便捷函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19103386/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com