Skip to content

Commit 9d0de63

Browse files
authored
Update readme.md
1 parent df842ae commit 9d0de63

1 file changed

Lines changed: 25 additions & 14 deletions

File tree

readme.md

Lines changed: 25 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -203,22 +203,33 @@ Original method:
203203

204204
Cached method(singleton mode):
205205

206-
type User Struct{}
207-
var getUserInfoCached func(uid int) (&User, error)
208-
func NewUser() *User{
209-
u := &User{}
210-
getUserInfoCached = gofnext.CacheFn1Err(u.getUserInfo)
211-
return u
212-
}
206+
```
207+
type User struct {}
208+
var (
209+
getUserInfoCached func(uid int) (*User, error)
210+
once sync.Once
211+
)
212+
213+
func NewUser() *User {
214+
u := &User{}
215+
once.Do(func() {
216+
// use cache decorator
217+
getUserInfoCached = gofnext.CacheFn1Err(u.getUserInfo)
218+
})
219+
return u
220+
}
213221
214-
// proxy method with cached
215-
func (u *User) GetUserInfo(uid int) (*User, error){
216-
return getUserInfoCached(uid)
217-
}
222+
// Cached method
223+
func (u *User) GetUserInfo(uid int) (*User, error) {
224+
return getUserInfoCached(uid)
225+
}
218226
219-
func (u *User) getUserInfo(uid int) (*User, error){
220-
...
221-
}
227+
// Origin method
228+
func (u *User) getUserInfo(uid int) (*User, error) {
229+
fmt.Printf("mock data: uid=%d\n", uid)
230+
return &User{}, nil
231+
}
232+
```
222233

223234
Cached method(factory mode):
224235

0 commit comments

Comments
 (0)