《Go语音圣经(中文版)》笔记(17)
Contents
#《Go 语音圣经(中文版)》
#可变参数
在声明可变参数函数时,需要在参数列表的最后一个参数类型之前加上省略符号...
,这表示该函数会接收任意数量的该类型参数。
调用者隐式的创建一个数组,并将原始参数复制到数组中,再把数组的一个切片作为参数传给被调用函数。
1 | package main |
1 | [16:13:49] onns@Onns ~/Onns/code/go/go-bible/ch5 $ go run sum/sum.go |
如果原始参数已经是切片类型,只需在最后一个参数后加上省略符。
1 | values := []int{1, 2, 3, 4} |
虽然在可变参数函数内部,...int
型参数的行为看起来很像切片类型,但实际上,可变参数函数和以切片作为参数的函数是不同的
。
1 | func f(...int) {} |
许多文件系统,尤其是NFS,写入文件时发生的错误会被延迟到文件关闭时反馈。如果没有检查文件关闭时的反馈信息,可能会导致数据丢失,而我们还误以为写入操作成功。如果io.Copy和f.close都失败了,我们倾向于将io.Copy的错误信息反馈给调用者,因为它先于f.close发生,更有可能接近问题的本质。