三: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 协议》,转载必须注明作者和本文链接
嗨,我是波波。曾经创业,有收获也有损失。我积累了丰富教学与编程经验,期待和你互动和进步! 公众号:上海PHP自学中心 付费知识星球:破解面试:程序员的求职导师
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
司机 @ 欣昊玉
文章
273
粉丝
340
喜欢
558
收藏
1107
排名:64
访问:12.2 万
私信
所有博文
社区赞助商