三:golang面试题-普通题-举例与速记

2. go struct能不能比较

因为是强类型语言,所以不同类型的结构不能作比较,但是同一类型的实例值是可以比较的,实例不可以比较,因为是指针类型

3. go defer(for defer),先进后出,后进先出

func b() {
    for i := 0; i < 4; i++ {
        defer fmt.Print(i)
    }
}

这段代码和你描述的概念是关于 Golang 中的 defer 语句。defer 语句的作用是将某个语句或函数的执行推迟到外层函数返回之后再执行。多个 defer 语句按照”后进先出”的顺序执行,即最后一个 defer 语句最先执行,第一个 defer 语句最后执行。

你的代码中定义了一个函数 b(),在其中有一个 for 循环,循环中的 defer 语句推迟了 fmt.Print(i) 的执行。每遍历一次,就会向 defer 栈中添加一个 fmt.Print(i),打印当前的 i ,但打印操作会被推迟。由于 defer 语句的后进先出特性,所以在函数返回时,它们会按照逆序(3,2,1,0)的方式被执行。

因此,当你调用 b() 时,实际打印出的内容会是 3, 2, 1, 0。

本作品采用《CC 协议》,转载必须注明作者和本文链接
• 15年技术深耕:理论扎实 + 实战丰富,教学经验让复杂技术变简单 • 8年企业历练:不仅懂技术,更懂业务落地与项目实操 • 全栈服务力:技术培训 | 软件定制开发 | AI智能化升级 关注「上海PHP自学中心」获取实战干货
wangchunbo
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
司机 @ 某医疗行业
文章
315
粉丝
353
喜欢
567
收藏
1137
排名:60
访问:12.6 万
私信
所有博文
社区赞助商