podman

Форк
0
44 строки · 790.0 Байт
1
// Package intern interns strings.
2
// Interning is best effort only.
3
// Interned strings may be removed automatically
4
// at any time without notification.
5
// All functions may be called concurrently
6
// with themselves and each other.
7
package intern
8

9
import "sync"
10

11
var (
12
	pool sync.Pool = sync.Pool{
13
		New: func() interface{} {
14
			return make(map[string]string)
15
		},
16
	}
17
)
18

19
// String returns s, interned.
20
func String(s string) string {
21
	m := pool.Get().(map[string]string)
22
	c, ok := m[s]
23
	if ok {
24
		pool.Put(m)
25
		return c
26
	}
27
	m[s] = s
28
	pool.Put(m)
29
	return s
30
}
31

32
// Bytes returns b converted to a string, interned.
33
func Bytes(b []byte) string {
34
	m := pool.Get().(map[string]string)
35
	c, ok := m[string(b)]
36
	if ok {
37
		pool.Put(m)
38
		return c
39
	}
40
	s := string(b)
41
	m[s] = s
42
	pool.Put(m)
43
	return s
44
}
45

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.