Golang Map 判断key存在且value为非空字符串
Golang Map 判断 Key 存在且 Value 为非空字符串
在 Golang 中,我们经常需要判断一个 map 中是否包含某个 key,并且该 key 对应的 value 是否为特定类型且满足特定条件,比如是否为非空字符串。
本文将介绍如何使用 if 语句结合 ok 断言和类型断言,优雅地实现这一目标。gopackage main
import ( 'fmt')
func main() { m := map[string]interface{}{ 'key1': 'value1', 'key2': 'value2', 'key3': 123, }
key := 'key1'
// 判断 key 是否存在,并且 value 是否为非空字符串 if val, ok := m[key]; ok { if strVal, ok := val.(string); ok && strVal != '' { fmt.Printf('Map 中包含 key '%s',其值为非空字符串:%s
', key, strVal) } else { fmt.Printf('Map 中包含 key '%s',但其值不是非空字符串 ', key) } } else { fmt.Printf('Map 中不包含 key '%s' ', key) }}
代码解析:
-
定义 map 和 key: -
m := map[string]interface{}{...}定义了一个map,key 为string类型,value 为interface{}类型。 -key := 'key1'定义了要查找的 key。 -
判断 key 是否存在: -
if val, ok := m[key]; ok {...}使用ok断言判断key是否存在于map中。 - 如果key存在,ok为true,val存储对应的 value。 - 如果key不存在,ok为false,val为对应类型的零值。 -
判断 value 是否为非空字符串: -
if strVal, ok := val.(string); ok && strVal != '' {...}使用类型断言判断value是否为string类型,并判断是否为空字符串。 - 如果value是string类型且非空,ok为true,strVal存储value的值。 - 否则,ok为false。
总结:
通过结合 ok 断言和类型断言,我们可以简洁有效地判断 Golang map 中 key 的存在性,并检查其 value 是否为特定类型和满足特定条件。
原文地址: https://www.cveoy.top/t/topic/fxEF 著作权归作者所有。请勿转载和采集!