golang不定参数
2022-08-24 22:51 youxin 阅读(88) 评论(0) 收藏 举报函数定义
首先来看如何定义一个不定参数的函数:
| 1 2 | 
 
 | 
该函数定义,定义了一个接受任何数目任何类型参数的函数。这里特殊的语法是三个点“...”,在一个变量后面加上三个点后,表示从该处开始接受不定参数,不同于python,golang的不定参数如果将这里"interface{}" 替换成某一确定类型,那么其就只能接受该类型的不定参数。
解引用slice
当要传递若干个值到不定参数函数中得时候,可以手动书写每个参数,也可以将一个slice传递给该函数:
| 1 | 
 | 
通过"..."可以将slice中得参数对应的传递给函数。相当于python中得“*args”。
这里要注意的是,解引用slice目前只能在不定参数函数传递参数时使用,在其他地方使用会报错。
package main import "fmt" func f1(args ...int) { for _, v := range args { fmt.Println(v) } } func main() { f1() f1(1) f1(1, 2, 3) }
任意类型的不定参数
interface{} : 空接口类型,因为任意类型都实现了空接口,因此可以将任意类型对象赋值给空接口。
func f1(args ...interface{}) { for _, v := range args { fmt.Println(v.(int))//这里使用了接口类型断言 } }
不定参数的传递 假设args是一个不定参数,则可以将该参数传递给其他具有不定参数的函数 func f1(args ...int) { f2(args...) f2(args[1:]...) } func f2(args ...int) { // }
 
                    
                 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号