2017-05-02 3 views
0

Etant donnée une fonction déclarée commeEst-il possible "d'appliquer partiellement" des fonctions variadiques dans go?

func foo(bars ...string) { 
    // ... 
} 

Je voudrais appeler cela comme si:

bar1 := "whiskey bar" 
rest := []string{"vodka bar", "wine bar"} 
foo(bar1, rest...) 

mais cela ne compile pas; les dernières erreurs de ligne avec ce message:

have (string, []string...) 
want (...[]string) 

Est-il possible que je peux déclarer une fonction variadique afin qu'il puisse être appelé avec les deux paramètres zéro ou plus qui sont des valeurs, et zéro ou un tableau de valeurs (à la fin)?

+0

Malheureusement il n'y a pas un moyen qui satisferait à vos deux conditions, le mieux que vous pouvez faire, je pense, est quelque chose comme ceci: 'foo (append ([] string {bar1}, reste ...) ...) '. – mkopriva

+1

Jetez également un coup d'oeil à ceci [donc réponse] (http://stackoverflow.com/a/28626170/965900). – mkopriva

+0

Également lié: [Est-il possible de déclencher une erreur de compilation avec une bibliothèque personnalisée dans golang?] (Http://stackoverflow.com/questions/37270743/is-it-possible-to-trigger-compile-time-error-with -custom-bibliothèque-dans-golang/37271129 # 37271129) – icza

Répondre