I have this Go code
kithttp.NewServer(
endpoints.AuthorizeUserEndpoint,
decodeRequest,
encodeResponse,
append(options, httptransport.ServerBefore(opentracing.FromHTTPRequest(tracer, "calling HTTP POST /endpoint", logger)))...,
)
Could you explain me what does append()...
do with ...
in the end.
The append built-in function appends elements to the end of a slice.
Read more in the docs.
The ...
is used in variadic functions (of which append
is an example), to pass all of the elements of the preceding variable.
So given a variable x := []int{1, 2, 3}
, the expression foo(x...)
will pass it to a function as if you had called foo(1, 2, 3)
in contrast to foo(x)
which would equivalent to foo([]int{1, 2, 3})
.
Basically append
takes the options
slice, appends additional options to it, returns new slice and then this merged slice is passed as separate arguments to kithttp.NewServer
constructor thanks to ...
.