回到简体

This commit is contained in:
chai2010
2016-02-15 11:06:34 +08:00
parent 9e878f9944
commit 2b37b23285
177 changed files with 2354 additions and 2354 deletions

View File

@@ -1,18 +1,18 @@
## 8.4. Channels
如果goroutine是Go音程序的併發體的話,那channels它們之間的通信機製。一channels是一通信機製,它可以讓一個goroutine通過它給另一goroutine送值信息。每channel都有一特殊的也就是channels可發送數據的類型。一可以送int類型數據的channel一般寫爲chan int。
如果goroutine是Go音程序的并发体的话,那channels它们之间的通信机制。一channels是一通信机制,它可以让一个goroutine通过它给另一goroutine送值信息。每channel都有一特殊的也就是channels可发送数据的类型。一可以送int类型数据的channel一般写为chan int。
使用置的make函,我可以建一channel
使用置的make函,我可以建一channel
```Go
ch := make(chan int) // ch has type 'chan int'
```
和mapchannel也一個對應make建的底層數據結構的引用。當我們複製一個channel或用於函數參數傳遞時我們隻是拷了一channel引用因此調用者何被調用者引用同一channel象。和其它的引用型一channel的零值也是nil。
和mapchannel也一个对应make建的底层数据结构的引用。当我们复制一个channel或用于函数参数传递时我们只是拷了一channel引用因此用者何被用者引用同一channel象。和其它的引用型一channel的零值也是nil。
兩個相同型的channel可以使用==算符比。如果兩個channel引用的是相通的象,那麽比較的結果爲眞。一channel也可以和nil行比
两个相同型的channel可以使用==算符比。如果两个channel引用的是相通的象,那么比较的结果为真。一channel也可以和nil行比
channel有送和接受兩個主要操作,都是通信行。一個發送語句將一個值從一個goroutine通channel送到另一個執行接收操作的goroutine。送和接收兩個操作都是用`<-`算符。在發送語句中,`<-`算符分割channel和要送的值。在接收句中,`<-`算符在channel象之前。一不使用接收果的接收操作也是合法的。
channel有送和接受两个主要操作,都是通信行。一个发送语句将一个值从一个goroutine通channel送到另一个执行接收操作的goroutine。送和接收两个操作都是用`<-`算符。在发送语句中,`<-`算符分割channel和要送的值。在接收句中,`<-`算符在channel象之前。一不使用接收果的接收操作也是合法的。
```Go
ch <- x // a send statement
@@ -20,15 +20,15 @@ x = <-ch // a receive expression in an assignment statement
<-ch // a receive statement; result is discarded
```
Channel支持close操作於關閉channel隨後對基於該channel的任何送操作都將導致panic常。對一個已經被close的channel之行接收操作依然可以接受到之前已成功送的數據如果channel中已經沒有數據的話講産生一零值的數據
Channel支持close操作于关闭channel随后对基于该channel的任何送操作都将导致panic常。对一个已经被close的channel之行接收操作依然可以接受到之前已成功送的数据如果channel中已经没有数据的话讲产生一零值的数据
使用置的close函就可以關閉一個channel
使用置的close函就可以关闭一个channel
```Go
close(ch)
```
以最簡單方式調用make函數創建的時一個無緩存的channel但是我也可以指定第二整形參數,對應channel的容量。如果channel的容量大零,那麽該channel就是帶緩存的channel。
以最简单方式用make函数创建的时一个无缓存的channel但是我也可以指定第二整形参数,对应channel的容量。如果channel的容量大零,那么该channel就是带缓存的channel。
```Go
ch = make(chan int) // unbuffered channel
@@ -36,7 +36,7 @@ ch = make(chan int, 0) // unbuffered channel
ch = make(chan int, 3) // buffered channel with capacity 3
```
們將先討論無緩存的channel在8.4.4節討論帶緩存的channel。
们将先讨论无缓存的channel在8.4.4节讨论带缓存的channel。
{% include "./ch8-04-1.md" %}