mirror of
https://github.com/chai2010/advanced-go-programming-book.git
synced 2025-05-24 04:22:22 +00:00
Merge branch 'master' of https://github.com/chai2010/advanced-go-programming-book
This commit is contained in:
commit
0bb40a4d98
@ -365,8 +365,8 @@ type SliceHeader struct {
|
||||
|
||||
```go
|
||||
var (
|
||||
a []int // 空切片, 和 nil 相等
|
||||
b = []int{} // 空切片, 和 nil 相等
|
||||
a []int // nil切片, 和 nil 相等, 一般用来表示一个不存在的切片
|
||||
b = []int{} // 空切片, 和 nil 不相等, 一般用来表示一个空的集合
|
||||
c = []int{1, 2, 3} // 有3个元素的切片, len和cap都为3
|
||||
d = c[:2] // 有2个元素的切片, len为2, cap为3
|
||||
e = c[0:2:cap(c)] // 有2个元素的切片, len为2, cap为3
|
||||
|
@ -139,13 +139,13 @@ Go语言实现生产者消费者并发很简单:
|
||||
// 生产者: 生成 factor 整数倍的序列
|
||||
func Producer(factor int, out chan<- int) {
|
||||
for i := 0; ; i++ {
|
||||
item <- i*factor
|
||||
out <- i*factor
|
||||
}
|
||||
}
|
||||
|
||||
// 消费者
|
||||
func Consumer(in <-chan int) {
|
||||
for _, v := range in {
|
||||
for v := range in {
|
||||
fmt.Println(v)
|
||||
}
|
||||
}
|
||||
@ -174,9 +174,9 @@ func main() {
|
||||
go Consumer(ch) // 消费 生成的队列
|
||||
|
||||
// Ctrl+C 退出
|
||||
ch := make(chan os.Signal, 1)
|
||||
signal.Notify(ch, syscall.SIGINT, syscall.SIGTERM)
|
||||
fmt.Printf("quit (%v)\n", <-ch)
|
||||
sig := make(chan os.Signal, 1)
|
||||
signal.Notify(sig, syscall.SIGINT, syscall.SIGTERM)
|
||||
fmt.Printf("quit (%v)\n", <-sig)
|
||||
}
|
||||
```
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user