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) }}

代码解析:

  1. 定义 map 和 key: - m := map[string]interface{}{...} 定义了一个 map,key 为 string 类型,value 为 interface{} 类型。 - key := 'key1' 定义了要查找的 key。

  2. 判断 key 是否存在: - if val, ok := m[key]; ok {...} 使用 ok 断言判断 key 是否存在于 map 中。 - 如果 key 存在,oktrueval 存储对应的 value。 - 如果 key 不存在,okfalseval 为对应类型的零值。

  3. 判断 value 是否为非空字符串: - if strVal, ok := val.(string); ok && strVal != '' {...} 使用类型断言判断 value 是否为 string 类型,并判断是否为空字符串。 - 如果 valuestring 类型且非空,oktruestrVal 存储 value 的值。 - 否则,okfalse

总结:

通过结合 ok 断言和类型断言,我们可以简洁有效地判断 Golang map 中 key 的存在性,并检查其 value 是否为特定类型和满足特定条件。

Golang Map 判断key存在且value为非空字符串

原文地址: https://www.cveoy.top/t/topic/fxEF 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录