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
|
```go
|
||||||
var (
|
var (
|
||||||
a []int // 空切片, 和 nil 相等
|
a []int // nil切片, 和 nil 相等, 一般用来表示一个不存在的切片
|
||||||
b = []int{} // 空切片, 和 nil 相等
|
b = []int{} // 空切片, 和 nil 不相等, 一般用来表示一个空的集合
|
||||||
c = []int{1, 2, 3} // 有3个元素的切片, len和cap都为3
|
c = []int{1, 2, 3} // 有3个元素的切片, len和cap都为3
|
||||||
d = c[:2] // 有2个元素的切片, len为2, cap为3
|
d = c[:2] // 有2个元素的切片, len为2, cap为3
|
||||||
e = c[0:2:cap(c)] // 有2个元素的切片, len为2, cap为3
|
e = c[0:2:cap(c)] // 有2个元素的切片, len为2, cap为3
|
||||||
|
@ -139,13 +139,13 @@ Go语言实现生产者消费者并发很简单:
|
|||||||
// 生产者: 生成 factor 整数倍的序列
|
// 生产者: 生成 factor 整数倍的序列
|
||||||
func Producer(factor int, out chan<- int) {
|
func Producer(factor int, out chan<- int) {
|
||||||
for i := 0; ; i++ {
|
for i := 0; ; i++ {
|
||||||
item <- i*factor
|
out <- i*factor
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 消费者
|
// 消费者
|
||||||
func Consumer(in <-chan int) {
|
func Consumer(in <-chan int) {
|
||||||
for _, v := range in {
|
for v := range in {
|
||||||
fmt.Println(v)
|
fmt.Println(v)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -174,9 +174,9 @@ func main() {
|
|||||||
go Consumer(ch) // 消费 生成的队列
|
go Consumer(ch) // 消费 生成的队列
|
||||||
|
|
||||||
// Ctrl+C 退出
|
// Ctrl+C 退出
|
||||||
ch := make(chan os.Signal, 1)
|
sig := make(chan os.Signal, 1)
|
||||||
signal.Notify(ch, syscall.SIGINT, syscall.SIGTERM)
|
signal.Notify(sig, syscall.SIGINT, syscall.SIGTERM)
|
||||||
fmt.Printf("quit (%v)\n", <-ch)
|
fmt.Printf("quit (%v)\n", <-sig)
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user