go使用中遇到的问题
题目来源:小米
答案1:
1.如短变量声明不能用于包级变量。变量遮蔽(variable shadowing)等。接口返回值与nil比较。
2.接口类型在运行时的表示分为两部分,一部分是类型信息,一部分是值信息。只有当接口类型变量的这两部分的值都为nil时,该变量才与nil相等
3.for range中多次使用相同迭代变量需要注意重新初始化。切片副本,map无序性等。
4.string字符串长度并不等于该字符串中的字符个数。在Go中string类型是不可改变的,我们无法改变其中的数据内容。那些尝试将string转换为切片再修改的方案其实修改的都是切片自身,原始string的数据并未发生改变。
5.goroutine。在没有外部结构支撑的情况下,Go原生并不支持获取某个goroutine的退出状态。(借助channel等)。任何一个goroutine出现panic,如果没有及时捕获,那么整个程序都将退出。只能采用防御型代码,即在每个goroutine的启动函数中加上对panic的捕获逻辑。