1 Star 1 Fork 0

bigbase/pg

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
in_op.go 829 Bytes
一键复制 编辑 原始数据 按行查看 历史
Vladimir Mihailenco 提交于 2018-02-12 13:09 . orm: add Query.Value
package types
import (
"reflect"
)
type inOp struct {
slice reflect.Value
}
var _ ValueAppender = (*inOp)(nil)
func In(values ...interface{}) ValueAppender {
return &inOp{
slice: reflect.ValueOf(values),
}
}
func InSlice(slice interface{}) ValueAppender {
return &inOp{
slice: reflect.ValueOf(slice),
}
}
func (in *inOp) AppendValue(b []byte, quote int) []byte {
return appendIn(b, in.slice, quote)
}
func appendIn(b []byte, slice reflect.Value, quote int) []byte {
for i := 0; i < slice.Len(); i++ {
if i > 0 {
b = append(b, ',')
}
elem := slice.Index(i)
if elem.Kind() == reflect.Interface {
elem = elem.Elem()
}
if elem.Kind() == reflect.Slice {
b = append(b, '(')
b = appendIn(b, elem, quote)
b = append(b, ')')
} else {
b = appendValue(b, elem, quote)
}
}
return b
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/bigbase/pg.git
git@gitee.com:bigbase/pg.git
bigbase
pg
pg
v7.1.6

搜索帮助