原文地址: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())
}
打印结果如下:

本文介绍了Go语言中的关键概念,包括如何访问map中不存在的key,数组与切片的区别,闭包的实现,channel的线程安全性,以及Go和C指针的不同。此外,还讨论了协程高负载时的排查方法,如协程泄露和使用pprof工具进行性能分析。最后,概述了多协程同步机制,如sync包中的工具和channel的应用。
最低0.47元/天 解锁文章
1708

被折叠的 条评论
为什么被折叠?



