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

时间:2017-07-13 09:39:32

标签: go

我有这个Go代码

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

您能否解释一下append()...最终对...做了什么。

2 个答案:

答案 0 :(得分:5)

  

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

the docs中阅读更多内容。

...用于可变函数(其中append为例),用于传递前一个变量的所有元素。

因此,如果给定变量x := []int{1, 2, 3},则表达式foo(x...)会将其传递给函数,就好像您调用foo(1, 2, 3)而不是foo(x)相当于foo([]int{1, 2, 3}) 1}}。

答案 1 :(得分:1)

基本上append获取options切片,向其添加其他选项,返回新切片,然后将此合并切片作为单独的参数传递给kithttp.NewServer构造函数,这要归功于{{1} }。