-
Notifications
You must be signed in to change notification settings - Fork 3
/
get.go
79 lines (70 loc) · 1.58 KB
/
get.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
package mapKit
import (
"github.com/richelieu-yang/chimera/v3/src/core/boolKit"
"github.com/richelieu-yang/chimera/v3/src/core/intKit"
"github.com/richelieu-yang/chimera/v3/src/core/strKit"
)
// Obtain
/*
@return (1) 第1个返回值: 如果key存在于m中,为key对应的值;否则为V类型的零值.
(2) 第2个返回值: key是否存在于m中.
e.g.
m := map[string]interface{}{
"a": 0,
"b": 1,
}
fmt.Println(mapKit.Obtain(m, "a")) // 0 true
fmt.Println(mapKit.Obtain(m, "c")) // <nil> false
*/
func Obtain[K comparable, V any](m map[K]V, key K) (V, bool) {
v, ok := m[key]
return v, ok
}
// Get
/*
@param m 可以为nil
@param key 如果不存在对应的值,将返回值类型的零值
*/
func Get[K comparable, V any](m map[K]V, key K) V {
return m[key]
}
// GetString
/*
@param m 可以为nil
*/
func GetString[K comparable, V any](m map[K]V, key K) (string, error) {
value := Get(m, key)
return strKit.ToStringE(value)
}
// GetInt
/*
@param m 可以为nil
*/
func GetInt[K comparable, V any](m map[K]V, key K) (int, error) {
value := Get(m, key)
return intKit.ToIntE(value)
}
// GetInt32
/*
@param m 可以为nil
*/
func GetInt32[K comparable, V any](m map[K]V, key K) (int32, error) {
value := Get(m, key)
return intKit.ToInt32E(value)
}
// GetInt64
/*
@param m 可以为nil
*/
func GetInt64[K comparable, V any](m map[K]V, key K) (int64, error) {
value := Get(m, key)
return intKit.ToInt64E(value)
}
// GetBool
/*
@param m 可以为nil
*/
func GetBool[K comparable, V any](m map[K]V, key K) (bool, error) {
value := Get(m, key)
return boolKit.ToBoolE(value)
}