mirror of
https://github.com/usual2970/certimate.git
synced 2025-08-02 07:26:51 +00:00
.github
.vscode
docker
internal
app
applicant
certificate
deployer
domain
notify
pkg
core
logging
sdk3rd
utils
cert
file
http
map
getter.go
marshal.go
slice
type
repository
rest
scheduler
statistics
workflow
migrations
ui
.dockerignore
.editorconfig
.gitignore
.goreleaser.yml
CHANGELOG.md
CONTRIBUTING.md
CONTRIBUTING_EN.md
Dockerfile
LICENSE.md
Makefile
README.md
README_EN.md
go.mod
go.sum
main.go
nixpacks.toml
257 lines
5.6 KiB
Go
257 lines
5.6 KiB
Go
package maputil
|
|
|
|
import (
|
|
"strconv"
|
|
)
|
|
|
|
// 以字符串形式从字典中获取指定键的值。
|
|
//
|
|
// 入参:
|
|
// - dict: 字典。
|
|
// - key: 键。
|
|
//
|
|
// 出参:
|
|
// - 字典中键对应的值。如果指定键不存在或者值的类型不是字符串,则返回空字符串。
|
|
func GetString(dict map[string]any, key string) string {
|
|
return GetOrDefaultString(dict, key, "")
|
|
}
|
|
|
|
// 以字符串形式从字典中获取指定键的值。
|
|
//
|
|
// 入参:
|
|
// - dict: 字典。
|
|
// - key: 键。
|
|
// - defaultValue: 默认值。
|
|
//
|
|
// 出参:
|
|
// - 字典中键对应的值。如果指定键不存在、值的类型不是字符串或者值为零值,则返回默认值。
|
|
func GetOrDefaultString(dict map[string]any, key string, defaultValue string) string {
|
|
if dict == nil {
|
|
return defaultValue
|
|
}
|
|
|
|
if value, ok := dict[key]; ok {
|
|
if result, ok := value.(string); ok {
|
|
if result != "" {
|
|
return result
|
|
}
|
|
}
|
|
}
|
|
|
|
return defaultValue
|
|
}
|
|
|
|
// 以 32 位整数形式从字典中获取指定键的值。
|
|
//
|
|
// 入参:
|
|
// - dict: 字典。
|
|
// - key: 键。
|
|
//
|
|
// 出参:
|
|
// - 字典中键对应的值。如果指定键不存在或者值的类型不是 32 位整数,则返回 0。
|
|
func GetInt32(dict map[string]any, key string) int32 {
|
|
return GetOrDefaultInt32(dict, key, 0)
|
|
}
|
|
|
|
// 以 32 位整数形式从字典中获取指定键的值。
|
|
//
|
|
// 入参:
|
|
// - dict: 字典。
|
|
// - key: 键。
|
|
// - defaultValue: 默认值。
|
|
//
|
|
// 出参:
|
|
// - 字典中键对应的值。如果指定键不存在、值的类型不是 32 位整数或者值为零值,则返回默认值。
|
|
func GetOrDefaultInt32(dict map[string]any, key string, defaultValue int32) int32 {
|
|
if dict == nil {
|
|
return defaultValue
|
|
}
|
|
|
|
if value, ok := dict[key]; ok {
|
|
var result int32
|
|
|
|
switch v := value.(type) {
|
|
case int:
|
|
result = int32(v)
|
|
case int8:
|
|
result = int32(v)
|
|
case int16:
|
|
result = int32(v)
|
|
case int32:
|
|
result = v
|
|
case int64:
|
|
result = int32(v)
|
|
case uint:
|
|
result = int32(v)
|
|
case uint8:
|
|
result = int32(v)
|
|
case uint16:
|
|
result = int32(v)
|
|
case uint32:
|
|
result = int32(v)
|
|
case uint64:
|
|
result = int32(v)
|
|
case float32:
|
|
result = int32(v)
|
|
case float64:
|
|
result = int32(v)
|
|
case string:
|
|
// 兼容字符串类型的值
|
|
if t, err := strconv.ParseInt(v, 10, 32); err == nil {
|
|
result = int32(t)
|
|
}
|
|
}
|
|
|
|
if result != 0 {
|
|
return int32(result)
|
|
}
|
|
}
|
|
|
|
return defaultValue
|
|
}
|
|
|
|
// 以 64 位整数形式从字典中获取指定键的值。
|
|
//
|
|
// 入参:
|
|
// - dict: 字典。
|
|
// - key: 键。
|
|
//
|
|
// 出参:
|
|
// - 字典中键对应的值。如果指定键不存在或者值的类型不是 64 位整数,则返回 0。
|
|
func GetInt64(dict map[string]any, key string) int64 {
|
|
return GetOrDefaultInt64(dict, key, 0)
|
|
}
|
|
|
|
// 以 64 位整数形式从字典中获取指定键的值。
|
|
//
|
|
// 入参:
|
|
// - dict: 字典。
|
|
// - key: 键。
|
|
// - defaultValue: 默认值。
|
|
//
|
|
// 出参:
|
|
// - 字典中键对应的值。如果指定键不存在、值的类型不是 64 位整数或者值为零值,则返回默认值。
|
|
func GetOrDefaultInt64(dict map[string]any, key string, defaultValue int64) int64 {
|
|
if dict == nil {
|
|
return defaultValue
|
|
}
|
|
|
|
if value, ok := dict[key]; ok {
|
|
var result int64
|
|
|
|
switch v := value.(type) {
|
|
case int:
|
|
result = int64(v)
|
|
case int8:
|
|
result = int64(v)
|
|
case int16:
|
|
result = int64(v)
|
|
case int32:
|
|
result = int64(v)
|
|
case int64:
|
|
result = v
|
|
case uint:
|
|
result = int64(v)
|
|
case uint8:
|
|
result = int64(v)
|
|
case uint16:
|
|
result = int64(v)
|
|
case uint32:
|
|
result = int64(v)
|
|
case uint64:
|
|
result = int64(v)
|
|
case float32:
|
|
result = int64(v)
|
|
case float64:
|
|
result = int64(v)
|
|
case string:
|
|
// 兼容字符串类型的值
|
|
if t, err := strconv.ParseInt(v, 10, 32); err == nil {
|
|
result = t
|
|
}
|
|
}
|
|
|
|
if result != 0 {
|
|
return int64(result)
|
|
}
|
|
}
|
|
|
|
return defaultValue
|
|
}
|
|
|
|
// 以布尔形式从字典中获取指定键的值。
|
|
//
|
|
// 入参:
|
|
// - dict: 字典。
|
|
// - key: 键。
|
|
//
|
|
// 出参:
|
|
// - 字典中键对应的值。如果指定键不存在或者值的类型不是布尔,则返回 false。
|
|
func GetBool(dict map[string]any, key string) bool {
|
|
return GetOrDefaultBool(dict, key, false)
|
|
}
|
|
|
|
// 以布尔形式从字典中获取指定键的值。
|
|
//
|
|
// 入参:
|
|
// - dict: 字典。
|
|
// - key: 键。
|
|
// - defaultValue: 默认值。
|
|
//
|
|
// 出参:
|
|
// - 字典中键对应的值。如果指定键不存在或者值的类型不是布尔,则返回默认值。
|
|
func GetOrDefaultBool(dict map[string]any, key string, defaultValue bool) bool {
|
|
if dict == nil {
|
|
return defaultValue
|
|
}
|
|
|
|
if value, ok := dict[key]; ok {
|
|
if result, ok := value.(bool); ok {
|
|
return result
|
|
}
|
|
|
|
// 兼容字符串类型的值
|
|
if str, ok := value.(string); ok {
|
|
if result, err := strconv.ParseBool(str); err == nil {
|
|
return result
|
|
}
|
|
}
|
|
}
|
|
|
|
return defaultValue
|
|
}
|
|
|
|
// 以 `map[string]V` 形式从字典中获取指定键的值。
|
|
//
|
|
// 入参:
|
|
// - dict: 字典。
|
|
// - key: 键。
|
|
//
|
|
// 出参:
|
|
// - 字典中键对应的 `map[string]V` 对象。
|
|
func GetKVMap[V any](dict map[string]any, key string) map[string]V {
|
|
if dict == nil {
|
|
return make(map[string]V)
|
|
}
|
|
|
|
if val, ok := dict[key]; ok {
|
|
if result, ok := val.(map[string]V); ok {
|
|
return result
|
|
}
|
|
}
|
|
|
|
return make(map[string]V)
|
|
}
|
|
|
|
// 以 `map[string]any` 形式从字典中获取指定键的值。
|
|
//
|
|
// 入参:
|
|
// - dict: 字典。
|
|
// - key: 键。
|
|
//
|
|
// 出参:
|
|
// - 字典中键对应的 `map[string]any` 对象。
|
|
func GetKVMapAny(dict map[string]any, key string) map[string]any {
|
|
return GetKVMap[any](dict, key)
|
|
}
|