zl程序教程

您现在的位置是:首页 >  其他

当前栏目

Go 语言编译器帮助你做类型检查

2023-03-20 14:51:16 时间

为了进一步明确并发安全字典中键值的实际类型,这里大致有两种方案可选。第一种方案是,让并发安全字典只能存储某个特定类型的键。比如,指定这里的键只能是int类型的,或者只能是字符串,又或是某类结构体。遴选真题一旦完全确定了键的类型,你就可以在进行存、取、删操作的时候,使用类型断言表达式去对键的类型做检查了。

一般情况下,这种检查并不繁琐。而且,你要是把并发安全字典封装在一个结构体类型里面,那就更加方便了。你这时完全可以让 Go 语言编译器帮助你做类型检查。请看下面的代码:

func (iMap *IntStrMap) Load(key int) (value string, ok bool) { v, ok := iMap.m.Load(key)

if v != nil { value = v.(string)http://lx.gongxuanwang.com/

}我编写了一个名为IntStrMap的结构体类型,它代表了键类型为int、值类型为string的并发安全字典。在这个结构体类型中,只有一个sync.Map类型的字段m。并且,这个类型拥有的所有方法,都与sync.Map类型的方法非常类似。

两者对应的方法名称完全一致,方法签名也非常相似,遴选真题只不过,与键和值相关的那些参数和结果的类型不同而已。在IntStrMap类型的方法签名中,明确了键的类型为int,且值的类型为string。

显然,这些方法在接受键和值的时候,就不用再做类型检查了。另外,这些方法在从m中取出键和值的时候,完全不用担心它们的类型会不正确,因为它的正确性在当初存入的时候,就已经由 Go 语言编译器保证了。http://lx.gongxuanwang.com/sszt/39.htm