[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; ? (编辑:北几岛) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |