1
0
mirror of https://github.com/chai2010/advanced-go-programming-book.git synced 2025-05-24 04:22:22 +00:00
This commit is contained in:
chai2010 2018-01-03 23:56:18 +08:00
commit 0bb40a4d98
2 changed files with 7 additions and 7 deletions

View File

@ -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

View File

@ -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)
} }
``` ```