package test
import (
"fmt"
"reflect"
"testing"
)
func fun(val ...int) {
fmt.Println(reflect.TypeOf(val))
}
func TestTime(t *testing.T) {
for i := 0; i < 100000; i++ {
//fun(1, 2, 3) //(1)
//fun([]int{1, 2, 3}...) //(2)
}
}
(1)耗时:
![](https://i.imgur.com/ZzHByzP.png)
(2)耗时:
![](https://i.imgur.com/UF7Ttei.png)
可变参数,都是以切片复制的形式来传递的, 因为切换的数据结构(指针, 长度, 容量). 一开始, 我以为是(1)更耗时的, 因为要把单一类型一个个组装成切片, (2)就是切片, 不用组装. 但是结果表明是(2)更耗时....
其中肯定发生了什么转换, 那请问大神究竟是发生了什么呢?
有疑问加站长微信联系(非本文作者)