原文地址:Go面试看这里了~(十三)
1、访问map中不存在的key?
会返回空值,可用value,key := map[key]格式验证map的key是否存在。
2、数组和切片的区别?
数组是值拷贝而切片是引用,切片可认为是一种特殊的数组。
3、函数闭包?
Go支持匿名函数,可作为闭包,其优越性在于可直接使用函数内变量,来看实例:
package main
import "fmt"
func getSequence() func() int {
i := 0
return func() int {
i += 1
return i
}
}
func main() {
// nextNumber 为一个函数,函数 i 为 0
nextNumber := getSequence()
// 调用 nextNumber 函数,i 变量自增 1 并返回
fmt.Println(nextNumber())
fmt.Println(nextNumber())
fmt.Println(nextNumber())
// 创建新的函数 nextNumber1,并查看结果
nextNumber1 := getSequence()
fmt.Println(nextNumber1())
fmt.Println(nextNumber1())
}
打印结果如下: