在Go中`append()...`做什么

Vit*_*lii 0 go

我有这个Go代码

kithttp.NewServer(
    endpoints.AuthorizeUserEndpoint,
    decodeRequest,
    encodeResponse,
    append(options, httptransport.ServerBefore(opentracing.FromHTTPRequest(tracer, "calling HTTP POST /endpoint", logger)))...,
)
Run Code Online (Sandbox Code Playgroud)

你能解释一下我到底append()...做了什么吗...

Fli*_*mzy 5

附加内置函数将元素附加到切片的末尾.

阅读文档中的更多内容.

...是在可变参数的函数(其中使用的append是一个例子),通过所有前述变量的元素.

所以给一个变量x := []int{1, 2, 3},表达foo(x...)将它传递给一个函数,如果你曾要求foo(1, 2, 3)相反,foo(x)这将等同于foo([]int{1, 2, 3}).