[GO] 变参函数-GO中函数传递变长参数
2023-02-18 15:41:26 时间
如果函数的最后一个参数是采用 ...type 的形式,那么这个函数就可以处理一个变长的参数,这个长度可以为 0,这样的函数称为变参函数。
示例函数和调用:
func myFunc(a, b, arg ...int) {} func Greeting(prefix string, who ...string) Greeting("hello:", "Joe", "Anna", "Eileen")
这里函数在定义参数时是who ...string , 调用时传递了3个string类型的参数,在函数内who是[]string类型 , 可以遍历who这个变量来拿到数据
如果一个变长参数的类型没有被指定,则可以使用默认的空接口 interface{},这样就可以接受任何类型的参数。该方案不仅可以用于长度未知的参数,还可以用于任何不确定类型的参数。一般而言我们会使用一个 for-range 循环以及 switch 结构对每个参数的类型进行判断
func checkNames(..,..,values … interface{}) { for _, value := range values { switch v := value.(type) { case int: … case float: … case string: … case bool: … default: … } } }
实际运用 , 在gorm的查询数据时 , 有使用变参函数 , 函数定义
func (s *DB) Select(query interface{}, args ...interface{}) *DB
函数使用时
db.Select("name, age").Find(&users) //// SELECT name, age FROM users; db.Select([]string{"name", "age"}).Find(&users) //// SELECT name, age FROM users; db.Table("users").Select("COALESCE(age,?)", 42).Rows() //// SELECT COALESCE(age,'42') FROM users;
相关文章
- 一文教会你mock(Mockito和PowerMock双剑合璧)
- Go语言性能剖析利器--pprof实战
- Linux内存泄露案例分析和内存管理分享
- 通过linux-PAM实现禁止root用户登陆的方法
- Linux策略路由详解
- 理解virt、res、shr之间的关系(linux系统篇)
- oracle学习笔记(十六) PL/SQL 异常和goto语句
- Linux云主机安全入侵排查步骤
- PHP官方框架 Zend Framework 2.1 发布
- PHP 5.4 内置Web服务器使用说明
- 一个小巧的PHP防注入类
- PHPCMS后台入口地址隐藏方法
- 在Linux中将目录压缩打包为zip文件 并通过ftp上传的Shell脚本
- 用PHP解析XML为数组的方法
- 一段经典的抽奖算法 for PHP版
- 在Linux中用Shell脚本完成SVN版本库的建立
- PHPCMS V9无法正常通过QQ登录的解决方案
- 解决Nginx环境下PHP的flush失效问题
- 用SS5在Linux上搭建Socks5 Proxy代理服务器
- Linux中编译安装Redis和PHP扩展