arrays - 相当于 PHP 的 list() 的 go 是什么?

标签 arrays regex go

<分区>

在 PHP 中,我们有 list(),它使我们能够在一个操作中为变量列表赋值。例如:

list($a, $b) = ['valueA', 'valueB'];
echo $a; # valueA
echo $b; # valueB

是否可以在 Go 中做同样的事情?类似 Regexp.FindStringSubmatch() 的功能返回一个数组,因此最好将此值直接映射到其他变量。

最佳答案

你不能在 go 中这样做,但有一种方法可以通过利用它变量的指针值来实现。

创建一个函数,将所有接收者变量的指针作为 slice 传递,然后重新赋值。

func main() {
    var arr = []string{"value 1", "value 2", "value 3"}
    var a, b, c string

    vcopy(arr, &a, &b, &c)

    fmt.Println(a) // value 1
    fmt.Println(b) // value 2
    fmt.Println(c) // value 3
}

func vcopy(arr []string, dest ...*string) {
    for i := range dest {
        if len(arr) > i {
            *dest[i] = arr[i]
        }
    }
}

示例 http://play.golang.org/p/gJzWp1WglJ

通过使用这种技术,传递任何变量都不是问题。

关于arrays - 相当于 PHP 的 list() 的 go 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36855264/

相关文章:

c - 如何找到C中两个数组之间的差异?

sql - MySQL REGEXP 到 SQL Server

c++ - 使用 Boost::Regex 获取最后一场比赛

go - tar存档保留硬链接(hard link)

Golang : How to recover a string(int64)?

javascript - 使用reduce()减少Javascript中的子数组数量

arrays - Swift 3 - 从字典数组中获取值

asp.net - 创建一个包含两列值的 VB.NET 数组?

java - 验证字符串为空或 null 的最佳方法

go - 使用 FlatBuffers 更快地发送/写入 Float32 数组