仓库地址: https://github.com/lxzan/fi
动态
SQL查询条件构造器, 默认跳过空指针和类型零值
package main
import (
"github.com/lxzan/fi"
)
type Request struct {
StartTime int64 `filter:"cmp=gte"`
EndTime int64 `filter:"cmp=lt"`
Name string `filter:"cmp=eq"`
}
func main() {
v := &Request{StartTime: 1, Name: "aha"}
f := fi.GetFilter(v)
println(f.GetExpression())
}
`start_time` >= ? AND `name` = ?
func (c *Request) GetFilter() *fi.Filter {
return fi.
NewFilter().
Gte("start_time", c.StartTime).
Lt("end_time", c.EndTime).
Eq("name", c.Name)
}
go test -benchmem -run=^$ -bench ^Benchmark github.com/lxzan/fi
goos: darwin
goarch: arm64
pkg: github.com/lxzan/fi
BenchmarkGetFilterReflect-8 501673 2374 ns/op 1376 B/op 37 allocs/op
BenchmarkGetFilterNoReflect-8 1650524 721.8 ns/op 1104 B/op 18 allocs/op
PASS
ok github.com/lxzan/fi 4.035s
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.