golang 函数传参打包解包 不定长参数 ...
package main
import (
"fmt"
"reflect"
)
func main() {
str := "X"
iSlice := []interface{}(nil)
strSlice := []string{"Y", "X", "C"}
for _, v := range strSlice{
iSlice = append(iSlice, v)
}
if IN(str, iSlice...) {
fmt.Println("Yes, IN it!")
}
}
func IN(arg interface{}, args ...interface{}) bool {
argType := reflect.TypeOf(arg)
for index, value := range args {
if reflect.TypeOf(value) == argType && value == arg {
fmt.Println("Position", index, "Equal arg!")
return true
}
}
return false
}
上面的代码意思是创建函数IN,用于判断首个元素是否在某个可迭代类型中,这里采用不定长传参的方式,Go语言提供了这种传参方式,使用方法就是在参数名后,参数类型前加三个点“.”,即表示该参数代表后面的许多不确定个数的参数集合,如果要使用该函数,除了一个个传入外,也可以传入一个切片,在切片后添加三个点,既可以拆开传入。

浙公网安备 33010602011771号