电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

61396-Go语言程序设计项目化教程(微课版)3.3 变参与递归函数VIP免费

61396-Go语言程序设计项目化教程(微课版)3.3 变参与递归函数_第1页
61396-Go语言程序设计项目化教程(微课版)3.3 变参与递归函数_第2页
61396-Go语言程序设计项目化教程(微课版)3.3 变参与递归函数_第3页
变参与递归函数变参函数递归函数01.02.目录01变参函数•变参函数含义•变参函数定义格式1变参函数Go语言函数可变参数•在Go语言中,函数的参数可以支持指定任意的个数与数据类型,这就是Go语言函数的可变参数•最典型的可变参数就是Printf()函数•Go语言虽然支持不定长变参,但是要注意不定长参数只能作为函数的最后一个参数,不能放在其他参数的前面语法格式func函数名(固定参数列表,v...T))(返回参数列表){函数体}•可变参数一般放在函数参数列表的末尾,也可不存在固定参数列表•“v...T”代表的其实就是变量v为T类型的切片,v和T之间为三个“.”1变参函数可变参数本质•Go语言中函数的可变参数:必须是函数的最后一个参数•这其实就是一个语法糖,效果类似于切片•要在多个函数中传递可变参数,可在传递时添加“...”•可变参数变量是一个包含所有参数的切片•如果要将这个含有可变参数的变量传递给下一个可变参数函数,可以在传递时给可变参数变量后添加“...”,这样就可以将切片中的元素进行传递,而不是传递可变参数变量本身。packagemainimport"fmt"funcsum(args...int)int{sum:=0for_,arg:=rangeargs{sum+=arg}returnsum}funcmain(){fmt.Println(sum(1,2,3))fmt.Println(sum(1,2,3,4,5,6,7))}运行结果为:628•Go语言函数可变参数,可以传入任意个数的参数•这里定义了一个函数sum(),该函数的参数是可变参数。因此我们在main函数调用的时候,可以传入任意个数的参数,但所有的参数的类型必须都是int类型的。1变参函数packagemainimport"fmt"funcprintStrs(args...string){for_,arg:=rangeargs{fmt.Print(arg,"")}fmt.Println()}funcmain(){printStrs("Hello","Golang")printStrs("I","Love","Study")}运行结果为:HelloGolangILoveStudy•Go语言函数可变参数,可以传入任意个数的参数•这里定义了一个函数printStrs(),该函数的参数是可变参数。因此我们在main函数调用的时候,可以传入任意个数的参数,但所有的参数的类型必须都是string类型的。1变参函数在Go语言中,函数的可变参数除了可以支持指定任意的个数,还可以支持任意的数据类型。•上述片段是定义了一个名为funName的函数,参数是args•参数args的个数是不确定的,参数args的类型也不是确定的•因此这里使用的数据类型时候接口类型,即interface。funcfunName(args...interface{}){函数体}1变参函数1变参函数packagemainimport"fmt"funchaiPrint(args...interface{}){for_,arg:=rangeargs{switcharg.(type){caseint:fmt.Println(arg,"typeisint")casestring:fmt.Println(arg,"typeisstring")caseint64:fmt.Println(arg,"typeisint64")casefloat64:fmt.Println(arg,"typeisfloat64")default:fmt.Println(arg,"typeisunknown")}}}funcmain(){haiPrint("Hello","Golang",3,100.1)}运行结果为:HellotypeisstringGolangtypeisstring3typeisint100.1typeisfloat64•Go语言函数可变参数,可以传入任意个数与任意类型•这里定义了一个函数haiPrint,该函数的参数是可变参数,参数的个数和参数的类型都是不确定的,因此我们在main函数调用的时候,可以传入任意个数和任意类型的参数。定义一个可传递的可变参数:funcaddAll(slice...int)将addall函数的可变函数修改为切片:funcaddAll(slice[]int)当想传递可变参数本身Go语言中典型的可变参数函数funcPrintln(a...any)(nint,errerror){returnFprintln(os.Stdout,a...)}funcPrintf(formatstring,a...any)(nint,errerror){returnFprintf(os.Stdout,format,a...)}1变参函数1变参函数packagemainimport"fmt"funcsum(titlestring,nums...int){varsumValueintfor_,num:=rangenums{sumValue+=num}fmt.Println(title,"sum:",sumValue)}funcmain(){sum("test1",1,2)nums:=[]int{1,2,3}sum("test2",nums...)}运行结果为:test1sum:3test2sum:6...int表示为变参函数,在主函数中第一次调用sum函数时,传参为1,2,然后计算和;第二次传参时定义了一个切片,在第二次调用sum函数时传入了定义好的切片。02递归函数•递归函数定义•递归需要具备的条件•递归函数的优缺点比较递...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

最好的沉淀+ 关注
实名认证
内容提供者

行业文档

最新文章

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部