From f55b4f9c0f709f23bf8052f46de78f73d59b0877 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Tue, 6 May 2014 15:16:23 +0800 Subject: [PATCH] In method now can receive slice for first params --- statement.go | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/statement.go b/statement.go index e66a8b13..02644452 100644 --- a/statement.go +++ b/statement.go @@ -670,10 +670,22 @@ func (statement *Statement) getInc() map[string]incrParam { // Generate "Where column IN (?) " statment func (statement *Statement) In(column string, args ...interface{}) *Statement { k := strings.ToLower(column) - if _, ok := statement.inColumns[k]; ok { - statement.inColumns[k].args = append(statement.inColumns[k].args, args...) + var newargs []interface{} + if len(args) == 1 && + reflect.TypeOf(args[0]).Kind() == reflect.Slice { + newargs = make([]interface{}, 0) + v := reflect.ValueOf(args[0]) + for i := 0; i < v.Len(); i++ { + newargs = append(newargs, v.Index(i).Interface()) + } } else { - statement.inColumns[k] = &inParam{column, args} + newargs = args + } + + if _, ok := statement.inColumns[k]; ok { + statement.inColumns[k].args = append(statement.inColumns[k].args, newargs...) + } else { + statement.inColumns[k] = &inParam{column, newargs} } return statement }