56
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

Goで可変引数の関数にスライスを展開して渡す

http://golang.org/ref/spec#Passing_arguments_to_..._parameters
で説明されています。

スライスの変数の後に...をつけて呼び出せば、Goで可変引数の関数にスライスを展開して渡すことができます。

試しに変数を用意せずに配列のリテラルの後に...をつけて見ましたが、こちらでも動作しました。

package main

import "fmt"

func main() {
    // normal variadic function call
    greeting("Hello", "世界", "日本")

    // you can pass an array with following '...'
    // http://golang.org/ref/spec#Passing_arguments_to_..._parameters
    names := []string{"世界", "日本"}
    greeting("Hi", names...)

    // actually you can pass an array literal following '...'
    greeting("Yay", []string{"世界", "日本"}...)
}

func greeting(prefix string, who ...string) {
    fmt.Printf("%s", prefix)
    for _, name := range who {
        fmt.Printf(" %s", name)
    }
    fmt.Printf("\n")
}

上のプログラムは
http://play.golang.org/p/9Yhowss0JM
で試せます。

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
56
Help us understand the problem. What are the problem?