博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Go] 函数/方法 的 变参
阅读量:4983 次
发布时间:2019-06-12

本文共 609 字,大约阅读时间需要 2 分钟。

变参 本质上就是一个切片。只能接收一个或多个同类型参数,且 必须放在参数列表的 尾部

func test(s string, a ...int) {    fmt.Printf("%T, %v\n", a, a) // 显示类型 和 值}func main() {    test("abc", 1, 2, 3, 4)}

输出:

[]int, [1, 2, 3, 4]

将切片作为变参时,须进行 展开操作(后面加“...”)。如果是数组,先将其转换为切片。

func test(a ...int) {    fmt.Println(a)}func main() {    a := [3]int{10, 20, 30}    test(a[:]...)}

既然变参是切片,那么参数复制的仅是切片自身,并不包括底层数组,也因此可修改原数据。如果需要,可以用内置函数 copy() 复制底层数据。

func test(a ...int) {    for i := range a {        a[i] += 100    }}func main() {    a := []int{10, 20, 30}    test(a...)        fmt.Println(a)}

输出:

[110 120 130]

转载于:https://www.cnblogs.com/52php/p/6067782.html

你可能感兴趣的文章
HTTP之Response状态码
查看>>
Mac如何使用git以及github
查看>>
mysql如何利用Navicat 导出和导入数据库
查看>>
Java正则表达式(一)、抓取网页email地址实例
查看>>
网络_01 基本配置
查看>>
【原创】关于oracle11G空表无法导出问题的解决方法
查看>>
16进制的简单运算
查看>>
速读《Javascript模式》(一)(简介、var的变量提升以及es6新规范的let)
查看>>
DM8168集成图像算法
查看>>
GDI编程小结
查看>>
nalply/crtmpserver
查看>>
jquery 遍历节点
查看>>
工具选择
查看>>
(转)C#实现RSA非对称加密解密
查看>>
迅为iTOP-4412开发板-Android4.4-固定MAC
查看>>
centos下,安装MySQL以及配置远程连接等
查看>>
获取硬盘和CPU的序列号
查看>>
Python全栈开发 day2 - 数据类型详解
查看>>
葡萄城报表的数据可视化分析
查看>>
(转)面向对象的三大基石(封装,继承和复合,多态)
查看>>