朋友問了一道使用通道來實現「多執行緒」通訊的golang題,我看了下,還比較簡單。
但由於這個對理解golang之間利用通道通訊有一定的幫助,所以寫下如下**,發出來給大家看看。
思路簡要:
最開始需要用乙個帶快取的通道來觸發開始操作,否則會引起死鎖。然後用兩個通道不斷的交替進行接收與傳送
在通道的接收傳送中,我們需要理解一點通道的底層實現原理,那就是package main
/**用三個執行緒,交替輸出abc,abc,abc...
*/import
("fmt"
"time"
)func
printc
(c1 chan
bool
, c2 chan
bool
, s string)}
func
main()
()// 開始觸發通道 c1
c1 <-
true
// 為了簡單表示,這裡只列印5次
forrange
make([
]struct,5
)}
接收操作
一定會在傳送操作完成
前完成,所以不要擔心不會列印。通用一點,就是第k個接收操作一定會在第k+c個傳送操作完成
之前完成。c是通道緩衝大小。 輸出字串
5.連線字串 半形句號 是字串連線符,可以把兩個字串連線成乙個字串。例如7 5 echo str.url 技巧 我們可以使用字串連線符累加字串。例如7 6 第一句我們給 str賦值,str表示字串 php中文社群位址是 第二句表示在 str的值上累加字串 www.phpnet.cn 所以,str最後...
輸出字串Count and Say
最近研究輸出字串,稍微總結一下,以後繼續補充 標題如下 the count and say sequence is the sequence of integers beginning as follows 1,11,21,1211,111221,1is read off as one 1 or11...
倒序輸出字串
public static void main string args system.out.println result public static string revertstring string str char chars str.tochararray int len chars.le...