加入收藏 | 设为首页 | 会员中心 | 我要投稿 北几岛 (https://www.beijidao.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2021-05-21 06:49:05 所属栏目:大数据 来源: https://www.jb51.cc
导读:如果函数的最后一个参数是采用 ...type 的形式,那么这个函数就可以处理一个变长的参数,这个长度可以为 0,这样的函数称为变参函数。 示例函数和调用: func myFunc(a,b,arg ... int ) {}func Greeting(prefix string ,who ... string )Greeting( " hello:

如果函数的最后一个参数是采用 ...type 的形式,那么这个函数就可以处理一个变长的参数,这个长度可以为 0,这样的函数称为变参函数。

示例函数和调用:

func myFunc(a,b,arg ...int) {}

func Greeting(prefix string,who ...string)
Greeting("hello:",JoeAnnaEileen")

这里函数在定义参数时是who ...string?,调用时传递了3个string类型的参数,在函数内who是[]string类型,可以遍历who这个变量来拿到数据

?

如果一个变长参数的类型没有被指定,则可以使用默认的空接口 interface{},这样就可以接受任何类型的参数。该方案不仅可以用于长度未知的参数,还可以用于任何不确定类型的参数。一般而言我们会使用一个 for-range 循环以及 switch 结构对每个参数的类型进行判断

func checkNames(..,..,values … interface{}) {
     for _,value := range values {
         switch v := value.(type) {
             case : …
             floatbooldefault: …
         }
     }
 }

?

实际运用,在gorm的查询数据时,有使用变参函数,函数定义

func (s *DB) Select(query interface{},args ...interface{}) *DB

函数使用时

db.Select(name,age").Find(&users)
//// SELECT name,age FROM users;

db.Select([]string{nameage"}).Find(&
db.Table(users").Select(COALESCE(age,?)42).Rows()
/ SELECT COALESCE(age,'42') FROM users;

?

(编辑:北几岛)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读