面试题答案
一键面试- 在包的不同函数里定义相同名称的局部变量:
- 能否正常编译运行:程序可以正常编译运行。在Go语言中,函数是独立的作用域,不同函数内的局部变量即使名称相同,它们之间也相互独立,不会产生冲突。
- 示例:
package main
import "fmt"
func func1() {
num := 10
fmt.Println("func1中的num:", num)
}
func func2() {
num := 20
fmt.Println("func2中的num:", num)
}
func main() {
func1()
func2()
}
运行结果:
func1中的num: 10
func2中的num: 20
- 在一个函数内部先定义一个局部变量,之后又在该函数内的一个子代码块中定义同名变量:
- 发生什么:在Go语言中,这种情况是允许的。在子代码块中定义的同名变量会遮蔽外部代码块中的同名变量。当离开子代码块时,外部的同名变量又重新可见。
- 示例:
package main
import "fmt"
func main() {
num := 10
fmt.Println("外部的num:", num)
{
num := 20
fmt.Println("子代码块中的num:", num)
}
fmt.Println("离开子代码块后,外部的num:", num)
}
运行结果:
外部的num: 10
子代码块中的num: 20
离开子代码块后,外部的num: 10