golang 函数传参打包解包 不定长参数 ...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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语言提供了这种传参方式,使用方法就是在参数名后,参数类型前加三个点“.”,即表示该参数代表后面的许多不确定个数的参数集合,如果要使用该函数,除了一个个传入外,也可以传入一个切片,在切片后添加三个点,既可以拆开传入。

 

posted @   华腾海神  阅读(301)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示