点击上方蓝色“Golang来啦”关注我哟
加个“星标”,天天 15 分钟,一起学 Go
给大家推荐一首歌,个人感觉不错,适合边听边码,静静的!
言归正传,昨天的题目比较简单,但答案很丰富,值的一看。
参考答案及解析:编译不通过 invalid operation: sm1 == sm2
这道题目考的是结构体的比较,有几个需要注意的地方:
结构体只能比较是否相等,但是不能比较大小。
相同类型的结构体才能够进行比较,结构体是否相同不但与属性类型有关,还与属性顺序相关,sn3 与 sn1 就是不同的结构体;
1 sn3:= struct {
2 name string
3 age int
4 }{age:11,name:"qq"}
如果 struct 的所有成员都可以比较,则该 struct 就可以通过 == 或 != 进行比较是否相等,比较时逐个项进行比较,如果每一项都相等,则两个结构体才相等,否则不相等;
那什么是可比较的呢,常见的有 bool、数值型、字符、指针、数组等,像切片、map、函数等是不能比较的。 具体可以参考 Go 说明文档。https://golang.org/ref/spec#Comparison_operators
欢迎在留言区补充!
看下今天的题目:
1.通过指针变量 p 访问其成员变量 name,有哪几种方式?
A.p.name
B.(&p).name
C.(*p).name
D.p->name
2.下面这段代码能否通过编译?如果通过,输出什么?
1package main
2
3import "fmt"
4
5type MyInt1 int
6type MyInt2 = int
7
8func main() {
9 var i int =0
10 var i1 MyInt1 = i
11 var i2 MyInt2 = i
12 fmt.Println(i1,i2)
13}
答案以及解析会在下一篇文章中给出,鼓励大家在留言区留下答案,抱团学习,日拱一卒,每天进步一点!
ps:看完文章如果有收获,顺手花 1s 时间帮点下文末右下方的「在看」,感激!
所有学习上的成功,都只依靠两件事 -- 策略和坚持,而坚持本身就是最重要的策略!
推荐阅读:
如果我的文章对你有所帮助,点赞、转发都是一种支持!
给个[在看],是对四哥最大的支持
有疑问加站长微信联系(非本文作者)