当前位置: 首页 > article >正文

Go语言中...(三个点)的使用几个常见情况

①可变参数函数(Variadic Functions): 在函数定义中,“…” 可以用于表示可变参数。这使得函数可以接受任意数量的参数。例如:

func sum(nums ...int) int {
    total := 0
    for _, num := range nums {
        total += num
    }
    return total
}

func main() {
    result := sum(1, 2, 3, 4, 5)
    fmt.Println(result) // 输出: 15
}

②如果一个切片后面跟着 “…”,它会被展开为一个个的元素,如下输出15:

import "fmt"

func main() {
	nums := []int{1, 2, 3, 4, 5}
	fmt.Println(sum(nums...))
}

func sum(nums ...int) int {
	total := 0
	for _, num := range nums {
		total += num
	}
	return total
}

但是去掉fmt.Println(sum(nums...))的三个点,报错:cannot use nums (variable of type []int) as int value in argument to sum
这里传递的不是切片是多个整数!!!比如如下输出12

func main() {
	nums := []int{1, 2, 3, 4, 5}
	fmt.Println(sum(nums[2:]...))
}

func sum(nums ...int) int {
	total := 0
	for _, num := range nums {
		total += num
	}
	return total
}

以及fmt.Println(sum(nums[2]))输出3

③在数组的定义中,如果使用 “…” 表示长度,Go 语言会根据初始化值的个数自动计算数组的长度。数组的长度是固定的,声明时需要指定数组的长度。切片是动态长度的,声明时不需要指定长度。


http://www.kler.cn/a/229608.html

相关文章:

  • Mysql 性能优化:覆盖索引
  • 解决WordPress出现Fatal error: Uncaught TypeError: ftp_nlist()致命问题
  • 小程序textarea组件键盘弹起会遮挡住输入框
  • 前端开发:form中的标签
  • 基于Arduino平台,使用ESP32S3微处理器控制Servo时,内置Servo库无法使用
  • pytest 参数介绍
  • Midjourney新功能介绍:风格参考(Style References)详解
  • Dell服务器iDRAC9忘记密码, 通过RACADM工具不重启 重置密码
  • 【软件设计师笔记】深入探究操作系统
  • Unity类银河恶魔城学习记录3-2 Entity源代码 P48
  • Java 学习和实践笔记(1)
  • tcp/ip模型中,帧是第几层的数据单元?
  • 外包干了10个月,技术退步明显...
  • Python测试框架 Pytest —— mock使用(pytest-mock)
  • CPU对数据库的性能影响
  • 速度规划:s形曲线------pencv c++绘图(1)
  • LeetCode--455.分发饼干
  • SpringBoot之整合PageHelper分页插件
  • Android rom定制 修改system分区的容量大小
  • Kotlin手记(一):基础大杂烩
  • Spring MVC跨域设置
  • mac检查CPU温度和风扇速度软件:Macs Fan Control Pro 1.5.17中文版
  • RabbitMQ_00000
  • docker部署docker运维工具
  • MongoDB从入门到实战之Docker快速安装MongoDB
  • Go语言每日一练 ——链表篇(三)