go可变参数

先看一个例子:

package main

import (
	"fmt"
)

func changeParams(x1 int, x2 [4]string) {

	fmt.Println(x2)
	fmt.Println("x1=", x1)
}
func main() {
	testls := []string{"A", "B", "C", "D"}
	changeParams(16, testls)
}

#[A B C D]
#x1= 16

数组作为函数入参,如果入参和传参的数组大小不一致,
testls := []string{"A", "B", "C", "D"}则会报错:

Cannot use ‘testls’ (type []string) as the type [4]string

此时可以考虑使用可变传参:
在可变参数函数的声明中,最后一个参数的类型前面带有省略号,即(…)。它表明该函数可以调用任意数量的这种类型的参数
当在可变参数函数中不传递任何参数时,函数内部的默认为nil
可变参数函数通常用于字符串格式化
还可以在可变参数函数中传递多个切片
不能将可变参数用作返回值,但可以将其作为切片返回

package main

import (
	"fmt"
	"strings"
)

func changeParams(x1 int, x2 ...string) {

	fmt.Println(strings.Join(x2, "-"))
	fmt.Println("x1=", x1)
}
func main() {
	testls := []string{"A", "B", "C", "D"}
	changeParams(16, testls...)
}


#A-B-C-D
#x1= 16

和直接使用多个参数是一样的:

package main

import (
	"fmt"
	"strings"
)

func changeParams(x1 int, x2 ...string) {

	fmt.Println(strings.Join(x2, "-"))
	fmt.Println("x1=", x1)
}
func main() {
	changeParams(16, "A", "B", "C", "D")
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值