- 面试题
- 第一天
- 第二天
- 第三天
- 第四天
- 第五天
- 第六天
- 第七天
- 第八天
- 第九天
- 第十天
- 第十一天
- 第十二天
- 第十三天
- 第十四天
- 第十五天
- 第十六天
- 第十七天
- 第十八天
- 第十九天
- 第二十天
- 第二十一天
- 第二十二天
- 第二十三天
- 第二十四天
- 第二十五天
- 第二十六天
- 第二十七天
- 第二十八天
- 第二十九天
- 第三十天
- 第三十一天
- 第三十二天
- 第三十三天
- 第三十四天
- 第三十五天
- 第三十六天
- 第三十七天
- 第三十八天
- 第三十九天
- 第四十天
- 第四十一天
- 第四十二天
- 第四十三天
- 第四十四天
- 第四十五天
- 第四十六天
- 第四十七天
- 第四十八天
- 第四十九天
- 第五十天
- 第五十一天
- 第五十二天
- 第五十三天
- 第五十四天
- 第五十五天
- 第五十六天
- 第五十七天
- 第五十八天
- 第五十九天
- 第六十天
- 第六十一天
- 第六十二天
- 第六十三天
- 第六十四天
- 第六十五天
- 第六十六天
- 第六十七天
- 第六十八天
- 第六十九天
- 第七十天
- 第七十一天
- 第七十二天
- 第七十三天
- 第七十四天
- 第七十五天
- 第七十六天
- 第七十七天
- 第七十八天
- 第七十九天
- 第八十天
- 第八十一天
- 第八十二天
- 第八十三天
- 第八十四天
- 第八十五天
- 第八十六天
- 第八十七天
- 第八十八天
- 第八十九天
- 第九十天
- 第九十一天
- 第九十二天
- 第九十三天
- 第九十四天
- 第九十五天
- 第九十六天
- 第九十七天
- 第九十八天
- 第九十九天
- 第一百天
- 第一百零一天
- 第一百零二天
- 第一百零三天
- 第一百零四天
- 第一百零五天
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
第五天
1.下面这段代码能否通过编译?不能的话,原因是什么?如果通过,输出什么?
func main() {
sn1 := struct {
age int
name string
}{age: 11, name: "qq"}
sn2 := struct {
age int
name string
}{age: 11, name: "qq"}
if sn1 == sn2 {
fmt.Println("sn1 == sn2")
}
sm1 := struct {
age int
m map[string]string
}{age: 11, m: map[string]string{"a": "1"}}
sm2 := struct {
age int
m map[string]string
}{age: 11, m: map[string]string{"a": "1"}}
if sm1 == sm2 {
fmt.Println("sm1 == sm2")
}
}
参考答案及解析:编译不通过 invalid operation: sm1 == sm2
这道题目考的是结构体的比较,有几个需要注意的地方:
- 结构体只能比较是否相等,但是不能比较大小。
- 相同类型的结构体才能够进行比较,结构体是否相同不但与属性类型有关,还与属性顺序相关,sn3 与 sn1 就是不同的结构体;
sn3:= struct {
name string
age int
}{age:11,name:"qq"}
- 如果 struct 的所有成员都可以比较,则该 struct 就可以通过 == 或 != 进行比较是否相等,比较时逐个项进行比较,如果每一项都相等,则两个结构体才相等,否则不相等;
那什么是可比较的呢,常见的有 bool、数值型、字符、指针、数组等,像切片、map、函数等是不能比较的。 具体可以参考 Go 说明文档。https://golang.org/ref/spec
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论