Go語言 函數參數點點點(...)意義


Go語言 函數參數(function argument) 點點點(...)意義是,此函數可以傳入零個, 一個,或多個參數,此函數稱為 可變參數函數 (variadic function)。

舉例來說,假設有一個函數:

func giveMeString(s ...string)

則我們在呼叫此函數時,可以這樣呼叫:

giveMeString()
giveMeString("hello")
giveMeString("hello", "world")

以上呼叫函數的方式皆可,再多傳幾個 string 型態的參數都可以。 在Go語言標準函式庫裡,最有名的例子是 fmt.Printf ,相信大家都有用過。

在Go Playground上執行範例

同場加映

延續上面的例子,假設有一個 []string 型態的變數想要傳入上面的函數, 該怎樣做呢?

比方說:

s := []string{"hello", "world"}

上面這個變數該如何傳入呢? 答案:

s := []string{"hello", "world"}
giveMeString(s...)

在變數名稱後一樣加三個點就可以傳入。


References:

[1]
[2]go - dot dot dot in Golang. interface with empty braces - Stack Overflow
[3]