官术网_书友最值得收藏!

variadic.go

In order to understand the first set of tests, we need to understand what a variadic function is and how Go handles it. Let's start with the definition:

Variadic function is a function that can accept any number of arguments during function call.

Given that Go is a statically typed language, the only limitation imposed by the type system on a variadic function is that the indefinite number of arguments passed to it should be of the same data type. However, this does not limit us from passing other variable types. The arguments are received by the function as a slice of elements if arguments are passed, else nil, when none are passed.

Let's look at the code to get a better idea:

// variadic.go 
 
package main 
 
func simpleVariadicToSlice(numbers ...int) []int { 
   return numbers 
} 
 
func mixedVariadicToSlice(name string, numbers ...int) (string, []int) { 
   return name, numbers 
} 
 
// Does not work. 
// func badVariadic(name ...string, numbers ...int) {} 

We use the ... prefix before the data type to define a functions as a variadic function. Note that we can have only one variadic parameter per function and it has to be the last parameter. We can see this error if we uncomment the line for badVariadic and try to test the code.

主站蜘蛛池模板: 屯留县| 慈溪市| 津市市| 岑溪市| 孝昌县| 富阳市| 石渠县| 台安县| 扎兰屯市| 开化县| 湘潭市| 商水县| 榆树市| 高雄市| 丹巴县| 闽清县| 武城县| 常德市| 广东省| 定安县| 霸州市| 阿拉善右旗| 治县。| 郁南县| 北流市| 广安市| 万年县| 堆龙德庆县| 喀喇| 武夷山市| 朝阳县| 乌拉特中旗| 沙洋县| 英山县| 黄山市| 秦皇岛市| 呼图壁县| 绥江县| 元氏县| 林芝县| 大理市|