栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

与私有接口比较

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

与私有接口比较

如前所述,您不能使用类型断言,因为您不能引用未导出的type

ssh.rsaPublicKey

使用

reflect
软件包可以实现您想要的一切。

由于

rsa.PublicKey
是的基础类型
ssh.rsaPublicKey
,因此可以将封装的 指针
key2
转换为
rsa.PublicKey
。一旦你获得
reflect.Value
你的
key2
,“导航”到

利用价值
Value.Elem()
。该值可转换为type的值
rsa.PublicKey
。您可以使用
Value.Convert()
“动态”将,在运行时将其转换为
rsa.PublicKey
。拥有后,您可以
reflect.DeepEquals()
用来进行比较,也可以手动进行比较。

它看起来像这样:

key1 := &rsa.PublicKey{N: big.NewInt(123), E: 10}key2, _ := ssh.NewPublicKey(&rsa.PublicKey{N: big.NewInt(123), E: 10})key2conv := reflect.ValueOf(key2).Elem().    Convert(reflect.TypeOf(rsa.PublicKey{})).Interface()// key2conf is an interface{}, wrapping an rsa.PublicKey// Comparision with DeepEqualfmt.Println(reflect.DeepEqual(*key1, key2conv))// Comparing manually:key22 := key2conv.(rsa.PublicKey)fmt.Println(key1.N.Cmp(key22.N)) // Int.Cmp() returns 0 if equalfmt.Println(key1.E == key22.E)

请注意,在手动比较时,比较

PublicKey.N
类型的字段
*big.Int
需要使用该
Int.Cmp()
方法,因为比较指针是比较内存地址,而不是指针值。如果两个值相等,则
Int.Cmp()
返回
0



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/436342.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号