Goのsliceを可変長引数を受け取る関数に参照渡ししたいと考えています。
以下のコードのようなイメージです。
go
1package main 2 3func f(i ...interface{}) { 4 // この関数に参照渡しする 5} 6 7func main() { 8 s := make([]interface{}, 10) 9 f((&s)...) // ここでエラーになる 10}
しかし、このコードは以下のエラーになってしまいます。
cannot use &s (type *[]interface {}) as type []interface {} in argument to f
Goのsliceを可変長引数を受け取る関数に参照渡しする方法があれば教えて頂けると助かります。
また現在Go言語でORMを作成している過程で上記のようなことをやる必要が出てきたのですが、これに対する代替案があれば教えていただけると助かります。
具体的には以下のコードのようなことをやろうとしています。
Go
1// dbはdatabase/sql.DBです 2rows, _ = db.Query("クエリ") 3for rows.Next() { 4 numFields := 10 //実際には構造体のフィールド数を取得します(10は例です) 5 datas := make([]interface{}, len(numFields)) 6 rows.Scan(datas...) // 参照渡しできないため、値が取得できない 7} 8
このコードの「// 参照渡しできないため、値が取得できない」とコメントしてある箇所で参照渡しできずに困っています。
もしこれを実現する上でsliceを可変長引数を受け取る関数に参照渡しする以外の代替案があれば教えていただけると助かります。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/27 09:22
2019/11/27 09:36
2019/11/27 09:39 編集
2019/11/27 09:50