我们平时学完一门编程语言,需要检测一下是否已经全面掌握了,这是我学习完GO之后觉得比较重要或容易出错的地方,各位初学者可参考一下,查漏补缺。
1. 源码文件声明的代码包的名称与其所在的目录的名称不同,生成的结果文件以谁为准?
2. type IZ int
type IZ = int
上述两种定义的区别?
3. stra := "i招"
获取字符个数的函数?
4. go如何实现继承?
没有继承。如果觉得有,参考官方文档:https://golang.org/doc/faq#inheritance
5. 以下代码输出什么?
package main
import "fmt"
func main() {
for i := 0; i < 10; i++ {
go func() {
fmt.Println(i)
}()
}
}
6. 以下生产者代码片段是否有问题?sendCond.Wait()内部操作有哪些?
var lock sync.RWMutex
sendCond := sync.NewCond(&lock)
lock.Lock()
if resourceNum == 1 {
sendCond.Wait()
}
resourceNum = 1
lock.Unlock()
recvCond.Signal()
7. context包的应用场景有哪些?
8. sync.Pool类型的应用场景有哪些?是否可用做连接池?
9. go程序什么情况下会发生内存泄漏?
10. 如何实现goroutine的完美退出?
11. Go语言对测试函数的名称和签名都有哪些规定?
12. 性能分析pprof采集数据的方式有哪些?