本文如何在Golang中使用tuple。
tuple类型
一组有限个有序元素可认为是tuple(元组),一些编程语言也称为对(pair)或有序集合(ordered set).不同语言规则不同,通常使用逗号分割值,一般tuple可以存储不同类型的值,且值是不可变的。
虽然其他语言有tuple类型,但go语言却没有提供。但无需失望,go的其他特性可以非常容易实现tuple功能。下面通过示例来演示Go如何实现tuple类型功能。
使用struct
tuple可以存储不同数据类型,我们可以使用interface{}类型支持任意数据类型。
package main
import "fmt"
func main() {
type Student struct {
name, age interface{}
}
stuList1 := []Student{
{"tom", 21},
{"jack", 22},
}
stuList2 := []Student{
{"mary", 30},
}
// append stuList2 to stuList1
stuList1 = append(stuList1, stuList2...)
for _, stu := range stuList1 {
fmt.Println(“stuInfo:”,stu)
}
}
/*
Output:
stuInfo: {tom 21}
stuInfo: {jack 22}
stuInfo: {mary 30}
*/
通过输出可以看到结果为类似于tuple类型,并且还可以通过点号访问单个属性。虽然这些特性都于tuple相关,但实际上它不是tuple类型。
返回多个值
通过tuple 函数可以返回多个值。虽然go没有tuple类型,但支持返回函数返回多个值:
package main
import "fmt"
func multipleValues() (string, int) {
return "Alex", 21
}
func main() {
name, age := multipleValues()
fmt.Println("Name :", name)
fmt.Println("Age :", age)
}
/*
Output:
Name : Alex
Age : 21
*/
这里可以看到一次返回多个值。
总结
通过上述方法可以让Go实现类型tuple功能。