一、golang
1、go中的包是什么
包是go工作区中包含go源文件或其他包的目录。源文件中每个函数、变量和类型都存储在链接包中。每个go源文件都属于一个包,该包在文件顶部使用下面的命令声明
package <package name>
可以用import <package name>
导入和导出包来重用导出的函数或类型
2、goroutine
2.1 什么是goroutine
一个 Goroutine 是一个函数或方法执行同时旁边其他任何够程采用了特殊的 Goroutine线程。Goroutine 线程比标准线程更轻量级,大多数 Golang 程序同时使用数千个 Goroutine
2.2 如何停止goroutine
1)向goroutine发送信号
package main
func main() {
quit := make(chan bool)
go func() {
for {
select {
case <- quit:
return
default:
// ...
}
}
}()
// ...
quit <- true
}
2.3 go中的channel
2.3.1 读写channel
- 如果给一个nil的channel发送数据,会永久阻塞
- 如果从一个nil的channel读取数据,会永久阻塞
- 给一个已关闭的channel发送数据,会panic
- 从一个已关闭的channel读取数据,如果缓冲区中为空,则会返回一个0值