2016-10-18 9 views
1

ここではユースケースです:私は動的に変数を構築しようとしています(つまり、それらを格納する必要があるということです)、次にそれらを可変的な関数に渡す必要があります。この関数のシグネチャは次のとおりです。そして失敗したコードは以下の通りです。これを行う適切な方法は何ですか?golangに可変引数を格納して渡しますか?

// variadic function 
func Select(dest interface{}, query string, args ...interface{}) error 

//failing code 
var args = make([]interface{}, 0, 5) 

func add(params ...interface{}) { 
    args = append(args, params) 
} 

Select(&dest, query, args...) 

//error is sql: converting Exec argument #0's type: unsupported type []interface {}, a slice 

答えて

2

追加機能では、スプレッド演算子も適用する必要があります。 エラーコードはちょっと変わったようですが、正しいコードは次のようになります:

var args = make([]interface{}, 0, 5) 

func add(params ...interface{}) { 
    args = append(args, params...) 
} 

Select(&dest, query, args...) 
関連する問題