在 Go 赋值中解包数组
虽然 Go 不支持像 Python 那样直接将数组解包为多个变量,但有一些策略可以实现类似的效果功能。
临时解包函数
一种方法是定义自定义函数:
func splitLink(s, sep string) (string, string) { x := strings.Split(s, sep) return x[0], x[1] }
然后您可以使用此函数解压缩数组:
name, link := splitLink("foo\thttps://bar", "\t")
可变参数指针参数
另一种方法涉及使用可变参数指针参数:
func unpack(s []string, vars... *string) { for i, str := range s { *vars[i] = str } }
这允许您编写:
var name, link string unpack(strings.Split("foo\thttps://bar", "\t"), &name, &link)
但是,这需要显式声明变量并且可读性较差。
处理更多Values
如果要解包的值的数量已知,您可以使用一系列赋值语句:
var name, link, description string x := strings.Split("foo\thttps://bar\tDescription", "\t") name = x[0] link = x[1] description = x[2]
或者,您可以使用循环迭代数组并将值分配给变量:
var name, link, description string for i := 0; i < len(x); i++ { switch i { case 0: name = x[i] case 1: link = x[i] case 2: description = x[i] } }
以上是如何在 Go 赋值中解压数组?的详细内容。更多信息请关注PHP中文网其他相关文章!