go - 在golang中使用可变参数切片调用函数
问题描述
直接来自https://gobyexample.com/variadic-functions
对于这部分 sum(nums...),为什么我不能做 sum(nums) ?我不能只将切片传递给函数吗?
func sum(nums ...int) {
fmt.Print(nums, " ")
total := 0
for _, num := range nums {
total += num
}
fmt.Println(total)
}
func main() {
sum(1, 2)
sum(1, 2, 3)
nums := []int{1, 2, 3, 4}
sum(nums...)
}
解决方案
您可以将切片传递给采用切片的函数:
func sumSlice(nums []int) --> takes a slice
func sumVariadic(nums ...int) --> variadic
不同之处在于,在第一个中,切片头被传递给函数,而在第二个中,切片的各个元素被传递。您可以将它们用作:
sumSlice([]int{1,2,3})
sumVariadic(1,2,3)
推荐阅读
- lxd - Retrieving Container IP address after `lxc start`
- c++ - 如何通过套接字将文本文件的内容从服务器发送到客户端?
- swift - 为什么我反转 UIImage 后我的 CIImage 为零?
- wpf - 将 PowerShell 运行空间函数输出到 WPF 文本框
- c# - 我想让我的 cmd 输出到一个列表框 C#
- angular - ngrx 从效果中多次分派相同的动作
- julia - Julia中没有截距的单变量回归
- titan - Titan 图形 API 删除错误的边缘
- python - 考虑轴/刻度标签/标题的等间距 matplotlib Gridspec 图
- objective-c - 使用 NSSlider 更改 NSImage 亮度