go的可變引數

2021-10-25 19:13:12 字數 627 閱讀 8280

可變函式

條件:1、最後乙個引數使用...

2、如果把可變引數放在引數前面會把所有的引數都作為可變引數,編譯也會報錯syntax error: cannot use … with non-final parameter

3、可變引數需要用 range來迴圈

4、可變引數其實是個切片 slice

執行原理:

1、首先會把可變引數轉為相應型別的slice

2、再把這個切片傳遞給函式

可變引數vs切片

1、提高閱讀性

2、每次呼叫函式都需要建立乙個切片,這是沒必要的

想要把切片傳給可變引數需要對切片string{}... 加3個點即可,並且不會有新切片產生

**

package main

import "fmt"

/*** 可變引數

*/func main()

test2(1,t...) //切片後加...依然可以傳遞

}func test1(a ...int)

func test2(a int , b ...int)

//這個定義時,本身會報錯

func test3(b ...int, a int)

go 可變引數

0個或多個引數 func add arg int int 1個或多個引數 func add a int,arg int int 2個或多個引數 func add a int,b int,arg int int 注意 其中arg是乙個slice,我們可以通過arg index 依次訪問所有引數,通過l...

Go語言 可變引數

最近與同事討論時,提到go語言的可變引數,之前沒有總結過相關知識點,今天我們介紹一下go語言的可變引數。可變引數 variable parameters 引數數量可變的函式稱之為可變引數函式,主要是在使用語法糖 syntactic sugar 最經典的例子就是fmt.printf 和類似的函式,fm...

go語言可變引數的坑

對可變引數不了解的同學,可以先看這篇文章可變引數終極指南 不能通過空介面型別向可變引數傳遞乙個普通的切片,需要將普通切片轉換為空介面切片 可變引數不支援確定引數和slice解包的混合。package main func demo args inte ce func main arg3 inte ce...