• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

[GO]变参函数-GO中函数传递变长参数

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

如果函数的最后一个参数是采用 ...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;

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
go语言web开发系列之二十一:用go-qrcode库生成二维码 - ExplorerMan发布时间:2022-07-10
下一篇:
Go 编译器介绍 | Linux 中国发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap