44 "encoding/json"
55 "fmt"
66 "github.com/liu-cn/json-filter/filter"
7+ "time"
78)
89
910func mustJson (v interface {}) string {
@@ -39,8 +40,60 @@ func (u *Us) GetAvatar2() string {
3940 return string (u .Avatar [:]) + ".jpg"
4041}
4142
43+ func goOmit () {
44+ type (
45+ Tag struct {
46+ Icon string `json:"icon,omit(article)"`
47+ Name string `json:"name,omit(profile)"`
48+ }
49+ Articles struct {
50+ Password int `json:"password,omit($any)"` //$any表示任何场景都排除该字段
51+ Tags []Tag `json:"tags"`
52+ Hot int `json:"hot,select(img),func(GetHot)"` //热度 过滤时会调用GetHot方法获取该字段的值
53+ Like int `json:"-"`
54+ Collect int `json:"-"`
55+ }
56+ )
57+
58+ articles := Articles {Like : 100 , Collect : 20 , Tags : []Tag {{"icon" , "foo" }, {"icon" , "bar" }}}
59+
60+ for i := 0 ; i < 100 ; i ++ {
61+ go func () {
62+ fmt .Println (filter .Omit ("article" , & articles )) //尽量传指针,不传指针func选择器中的用指针接收的方法无法被调用
63+ }()
64+ }
65+
66+ }
67+ func goSelect () {
68+ type (
69+ Tag struct {
70+ Icon string `json:"icon,omit(article)"`
71+ Name string `json:"name,omit(profile)"`
72+ }
73+ Articles struct {
74+ Password int `json:"password,omit($any)"` //$any表示任何场景都排除该字段
75+ Tags []Tag `json:"tags"`
76+ Hot int `json:"hot,select(img),func(GetHot)"` //热度 过滤时会调用GetHot方法获取该字段的值
77+ Like int `json:"-"`
78+ Collect int `json:"-"`
79+ }
80+ )
81+
82+ articles := Articles {Like : 100 , Collect : 20 , Tags : []Tag {{"icon" , "foo" }, {"icon" , "bar" }}}
83+
84+ for i := 0 ; i < 10000 ; i ++ {
85+ go func () {
86+ fmt .Println (filter .Select ("article" , & articles )) //尽量传指针,不传指针func选择器中的用指针接收的方法无法被调用
87+ }()
88+ }
89+
90+ }
91+
4292func main () {
4393
94+ //goOmit()
95+ goSelect ()
96+ time .Sleep (time .Second * 10 )
4497 //var bb = []byte(`{"a":"1"}`)
4598 //u := Us{
4699 // BB: [3]byte{1, 2, 4},
@@ -55,8 +108,8 @@ func main() {
55108 //fmt.Println(filter.Omit("1", &list))
56109 //fmt.Println(mustJson(u))
57110
58- TestMap ()
59- TestMap ()
111+ // TestMap()
112+ // TestMap()
60113 //for i := 0; i < 3; i++ {
61114 // ExampleOmit()
62115 //}
0 commit comments