2017-07-13 37 views
0

做我有這樣的Go代碼是什麼`追加()...`在Go

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

你能解釋一下我這是什麼append()...做到底...

回答

5

追加內置函數將元素追加到切片的末尾。

瞭解更多the docs

...用於可變參數函數(其中append是一個示例),以傳遞上述變量的所有元素。因此,考慮的變量x := []int{1, 2, 3}

,表達foo(x...)將它傳遞給一個函數,如果你曾要求在對比foo(1, 2, 3)foo(x)這將相當於foo([]int{1, 2, 3})

1

基本上append採取options片,追加額外的選項給它,返回新的切片,然後這個合併後的切片作爲單獨的參數傳遞給kithttp.NewServer構造感謝...