LoginSignup
0
0

More than 3 years have passed since last update.

関数に可変長引数を使いたい

Posted at

はじめに

可変長引数を使った関数について、備忘録を兼ねて記載しておく

概要

Goでは、「...」を使うことで
・関数の定義に可変長引数を使うこと
・その関数にスライスを渡すこと が可能

可変長引数を使って任意個数の引数をとる関数を定義する

型の前に「...」を記載した(変数名 ...型)を引数の定義を使うことで、
任意の個数の引数をとる関数を定義することができる。

sample.go
func sample(s string, i ...int){
      //処理(もちろん、iはスライスなので、rangeを使うことも可能)
}

func main(){
    sample("Hello", 1, 2, 3, 4)
}

つまり、関数定義で使う「...」には、渡ってきた可変長引数の値を 変数名x([]T型)のスライスにまとめる効果がある。

制約事項

可変長引数は、「引数の末尾に1つだけ」定義することができる。
→ 可変長引数は、最後に1つだけしか書けない

スライスを可変長引数として渡す

変数名の後に「...」を記載した(変数名...)を使って、スライスを可変長引数にして渡すことが可能

sample.go
func sample(s string, i ...int){
      //処理(もちろん、iはスライスなので、rangeを使うことも可能)
}

func main(){
    sl := []int{1, 2, 3, 4}
    sample("Hello", sl...)
}

つまり、引数のスライスに「...」を使うと、スライスを可変長引数に展開する効果がある

まとめ

型のに「...」を記載した(変数名 ...型) には、可変長引数をスライスにまとめる
変数名のに「...」を記載した(変数名...) には、スライスを可変長引数に展開する
効果がある

参照

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0