āļĢāļ°āļ”āļąāļšāļāļĨāļēāļ‡
19 āļŠāļīāļ‡āļŦāļēāļ„āļĄ 2569

āļŦāļēāļšāļąāđŠāļāđƒāļŦāđ‰āđ€āļˆāļ­: Go

āđ‚āļ„āđ‰āļ”āļŦāļ™āļķāđˆāļ‡āļŠāļīāđ‰āļ™ āļŦāļēāļšāļąāđŠāļāđƒāļŦāđ‰āđ€āļˆāļ­ āļŦāļĢāļ·āļ­āļžāļīāļŠāļđāļˆāļ™āđŒāļ§āđˆāļēāđ„āļĄāđˆāļĄāļĩāļšāļąāđŠāļ

go
1package users
2
3import "sync"
4
5type User struct {
6	ID   string
7	Name string
8}
9
10var (
11	mu    sync.Mutex
12	cache = map[string]*User{}
13)
14
15func GetUser(id string, fetch func() *User) *User {
16	mu.Lock()
17	defer mu.Unlock()
18	if u, ok := cache[id]; ok {
19		return u
20	}
21	u := fetch()
22	cache[id] = u
23	return u
24}

āļ„āļĨāļīāļāļšāļĢāļĢāļ—āļąāļ”āļ—āļĩāđˆāđ€āļ›āđ‡āļ™āļ•āđ‰āļ™āđ€āļŦāļ•āļļāļ‚āļ­āļ‡āļ›āļąāļāļŦāļē

āļ„āļģāļ•āļąāļ”āļŠāļīāļ™āļ‚āļ­āļ‡āļ„āļļāļ“

āļ§āļąāļ™āļĨāļ°āļŦāļ™āļķāđˆāļ‡āļ„āļĢāļąāđ‰āļ‡ āļ„āļģāļ•āļ­āļšāļˆāļ°āđāļŠāļ”āļ‡āļ—āļąāļ™āļ—āļĩāļŦāļĨāļąāļ‡āļˆāļēāļāļ™āļąāđ‰āļ™

āļĢāļąāļāļĐāļēāļŠāļ–āļīāļ•āļīāļ•āđˆāļ­āđ€āļ™āļ·āđˆāļ­āļ‡āļ‚āļ­āļ‡āļ„āļļāļ“

āļŠāļĢāđ‰āļēāļ‡āļšāļąāļāļŠāļĩāđ€āļžāļ·āđˆāļ­āđ€āļāđ‡āļšāļŠāļ–āļīāļ•āļīāļ•āđˆāļ­āđ€āļ™āļ·āđˆāļ­āļ‡āđāļĨāļ°āļ•āļīāļ”āļ•āļēāļĄāļ„āļ§āļēāļĄāļ„āļ·āļšāļŦāļ™āđ‰āļē

āļŠāļĢāđ‰āļēāļ‡āļšāļąāļāļŠāļĩ