Go のオプションパラメータ

Jay Singh 2023年1月30日
  1. Go でvariadic関数を使用してオプションのパラメーターを渡する
  2. Go で可変個引数関数を使用して複数の文字列を渡する
Go のオプションパラメータ

可変個引数関数は、呼び出されたときに可変数の引数を持ちます。0 個以上の引数で使用できます。

省略記号 ... は、パラメーターの前に変数関数を定義できます。

Go でvariadic関数を使用してオプションのパラメーターを渡する

この関数は、任意の数の ints を入力として受け入れます。スライスにすでに多くの args がある場合は、func(slice...) を使用してそれらを可変個引数関数に適用します。

package main

import "fmt"

func sum(nums ...int) {
	fmt.Print(nums, " ")
	total := 0
	for _, num := range nums {
		total += num
	}
	fmt.Println(total)
}
func main() {
	sum(1, 2)
	sum(1, 2, 3)
	nums := []int{1, 2, 3, 4}
	sum(nums...)
}

出力:

[1 2] 3
[1 2 3] 6
[1 2 3 4] 10

Go で可変個引数関数を使用して複数の文字列を渡する

s パラメータに提供されるパラメータの数に制限はありません。ツリードットの省略記号は、この文字列が 0 から多数までの任意の数の値を持つことができることをコンパイラに通知します。

package main

import "fmt"

func main() {
	variadic()
	variadic("white", "black")
	variadic("white", "black", "blue")
	variadic("white", "black", "blue", "purple")
}
func variadic(s ...string) {
	fmt.Println(s)
}

出力:

[]
[white black]
[white black blue]
[white black blue purple]

関数に名前が指定されたときに、人々に挨拶するプログラムを作成しましょう。

package main

import "fmt"

func main() {
	sayHello()
	sayHello("Jay")
	sayHello("Jessica", "Mark", "Jonas")
}

func sayHello(names ...string) {
	for _, n := range names {
		fmt.Printf("Hello %s\n", n)
	}
}

出力:

Hello Jay
Hello Jessica
Hello Mark
Hello Jonas

関連記事 - Go Variadic