三: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 协议》,转载必须注明作者和本文链接