首页 > 试题广场 >

#Go程序的输出结果是什么packagemainimport

[单选题]

#Go程序的输出结果是什么
package main
import (
"fmt"
)

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

  • 01234567

  • 12345678

  • 00000000

  • 88888888

D. 函数运行过程
1,for循环,defer func(): func及其参数(本例中没有)连续8次压入函数栈。每次压栈的过程,还没有执行print。
2,for循环结束,i已经增加到8
3,return之前,defer再将8个func()出栈,每次func的执行过程是:
     1)fmt.Print和参数i入栈,此时,i值需要确定,查看i值,结果为8
     2)fmt.Print出栈
     3)执行print,打印i
4,return

因此,每次func都会打印一个8,结果就是88888888

编辑于 2021-07-22 19:49:50 回复(0)