博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
go语言学习十三 - 相等性
阅读量:5213 次
发布时间:2019-06-14

本文共 1131 字,大约阅读时间需要 3 分钟。

package mainimport "fmt"func main() {	//接口的相等性比较	type a interface {		aaa() int		bbb() int	}	type b interface {		bbb() int		aaa() int	}	var x a	var y b	fmt.Println(x == y) //true 对于接口,只要方法列表相同,即使顺序不同也是同一个接口,可以互相替换	//结构体的相等性比较	type aa struct {		aaa int		bbb int	}	type bb struct {		aaa int		bbb int	}	var xx aa	var yy bb	//fmt.Println(xx == yy) 不同的命名结构体相互比较,无法通过编译, 命名结构体 只要不是同一个名字的结构体即使结构相同也是不同的类型,不可互相替换	fmt.Println(xx, yy)	x1 := aa{1, 2}	x2 := aa{1, 2}	fmt.Println(x1 == x2) //true , 对于相同类型的结构体,只要字段值全部相同,那么这两个结构体值相等	//数组的相等性比较	y1 := [4]int{1, 2, 3, 4}	y2 := [4]int{1, 2, 3, 4}	y3 := [3]int{1, 2, 3}	fmt.Println(y1 == y2) //true , 对于相同长度的数组,相同索引位置的值都相等,那么这两个结构体值相等	fmt.Println(y1, y3)   // fmt.Println(y1 == y3) 不同长度的数组相等性相互比较,无法通过编译	//切片的相等性比较	z1 := []int{1, 2, 3}	z2 := []int{1, 2, 3}	z3 := z1	fmt.Println(z1, z2) // fmt.Println(z1 == z2) 切片之间的相等性比较,无法通过编译,operation == not defined on []int	fmt.Println(z3)     // fmt.Println(z1 == z3) 比较引用的相等性也不能通过编译	z4 := &z1	z5 := &z1	fmt.Println(z4 == z5) //同类型的指针是可以比较的,比较的是他们的地址是否相同,不同类型的指针也不能比较相等	//由于go不支持运算符重载,> < >= <= 只能用于数值和字符串类型}

  

转载于:https://www.cnblogs.com/scala/p/9592628.html

你可能感兴趣的文章
Js三大特性--封装、继承以及多态
查看>>
2019年8月2日07:51:10 马上要撤
查看>>
vue中router与route的区别
查看>>
js 时间对象方法
查看>>
网络请求返回HTTP状态码(404,400,500)
查看>>
Spring的JdbcTemplate、NamedParameterJdbcTemplate、SimpleJdbcTemplate
查看>>
Mac下使用crontab来实现定时任务
查看>>
303. Range Sum Query - Immutable
查看>>
迪杰斯特拉算法---单源点最短路径
查看>>
【python】TCP/IP编程
查看>>
JVM 类型的生命周期学习
查看>>
图片加载失败显示默认图片占位符
查看>>
2018 ZJCPC
查看>>
【★】浅谈计算机与随机数
查看>>
[转载]宇宙文明等级的划分标准
查看>>
Jmeter的log输出控制
查看>>
《代码阅读方法与实现》阅读笔记一
查看>>
ActiveMQ配置使用 for CentOS6
查看>>
解决 sublime text3 运行python文件无法input的问题
查看>>
javascript面相对象编程,封装与继承
查看>>