Go的等价物是Python的“is”运算符?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Go的等价物是Python的“is”运算符?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含955字,纯文字阅读大概需要2分钟。
内容图文
如何确定2个变量是否引用Go中的同一个实例?更具体地说,对一个变量的值的突变也会影响另一个变量的值.
进一步细化问题:我如何确定2个变量何时满足每个CPython的“is”运算符:
a is b
解决方法:
在Python中,所有值都是对象的引用(即指针).您永远不能将对象本身作为值. is运算符比较指针相等的两个值,即指针;而==运算符比较两个这样的指针,以确定指向的对象是否相等.
在Go中,它有点复杂. Go有指针,以及其他非指针类型(布尔值,数字类型,字符串,数组,切片,结构,函数,接口,映射,通道).要求非指针类型的指针相等是没有意义的. (这是什么意思?它会完成什么?)
因此,为了获得与Python相同的情况,让我们将所有值放在指针后面,所以所有变量都是指针. (在“New”函数的许多Go库中有一个约定,它创建一个指针类型;并且这些方法也对指针类型进行操作;因此这与该约定兼容.)然后(如果a和b是指针)a Go中的== b会比较指针相等的两个这样的指针;如果它们具有可比性,您可以使用* a == * b来比较基础值.
Go还有几种非指针引用类型:切片,映射,函数和通道.使用==的频道可比较它们是否是同一频道.但是,无法比较切片,贴图和函数;虽然可能有可能使用反射.
内容总结
以上是互联网集市为您收集整理的Go的等价物是Python的“is”运算符?全部内容,希望文章能够帮你解决Go的等价物是Python的“is”运算符?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。