Goで可変引数を渡すときにの記述方法についてです。
可変長引数は関数で内部的にはスライスに変換されるのでスライスで渡すこともできますが、関数側は”v1(names ...string)
“のように受け取りますが、呼び出し側は”v1(names...)
“のように…が関数とは逆の位置に来ますよということです。
/*
Variadic functions in Golang
*/
package main
import (
"fmt"
)
func v1(names ...string) { // pack operator used before type in argument
fmt.Println(names)
}
func main() {
names := []string{"Albert", "Issac"}
v1("John", "Jane", "Dexter", "Bruce") // [John Jane Dexter Bruce]
// Here is unpack operator in action
v1(names...) // [Albert Issac]
name1 := []string{"John", "F.", "Kennedy"}
v1(name1...)
}
決まり事ではありますが、論理的に考えれば受け取り側は型を指定していて、呼び出し側は変数名(スライス名)を指定しているから合理的とは言えます。
admin