channel小知識點

2021-10-05 22:56:06 字數 1396 閱讀 5628

1.傳入channel的值是原來值的備份,從channel中取出來的值也是通道中值的備份。

2.如果想通過channel傳送同乙個值,那麼可以傳遞這個值的指標

3.關閉channel要從傳送端關閉,如果從接收端關閉會引發恐慌。

4.傳送端關閉通道並不會影響接收端接收

5.帶緩衝區和不帶緩衝區的channel區別就是長度是否為0,不帶緩衝區的channel長度就是0

6.操作未被初始化的通道會被永久阻塞

var demo chan

int//for會被永久阻塞

for i:=

range demo

7.從channel接收資料的方式

var demochan=

make

(chan

int,10)

/*if 方式

在通道未被關閉之前,若通道中沒有值則會阻塞在if語句,若有則會取出。

若通道關閉,則ok是false,且if不再被阻塞

*/for

else}/*

for迴圈方式:

通道關閉之前,如果通道內有值則取出否則for阻塞

通道關閉之後,for就會退出來不再阻塞

*/for

for i:=

range demochan

/*select方式

select 中每乙個case的條件需要是乙個對chan操作的條件

如果沒有case可以被觸發,則執行default,如果有多個case被觸發,則會隨機執行乙個case

下面的例子每一次執行的結果都會不一樣

*/chancap:=

5intchan:=

make

(chan

int,chancap)

for i:=

0;i}for i:=

0;i/*for與select共用

補充知識:

loop可以標識loop緊挨著下面**的位置,**中的loop在for上面,最後的break loop意思是break for迴圈而不是break select

*/intchan:=

make

(chan

int,10)

for i:=

0;i<

10;i++

close

(intchan)

synchan:=

make

(chan

struct,1

)gofunc()

fmt.

printf

("received: %v\n"

,e)}

} synchan<-

struct}(

)<-synchan

Hibernate 小知識點

今天比較忙沒怎麼寫 知識一些曉得知識或是經驗吧!1.lazy延遲載入 也可以說是需要的時候再區載入 場景 乙個類如person和address,person可以通過getaddress 來得到address的set集合.有乙個dao控制類operation.方法public person query...

dom 小知識點

1 classname屬性可設定或返回元素的 class 屬性。function getclass document.getelementbyid d1 classname bbb alert document.getelementbyid d1 classname 2 removechild 刪除...

小知識點 備查

1,kermit c 安裝 sudo apt get install ckermit 開啟串列埠 在終端裡執行 sudo kermit c 命令 關閉串列埠 先同時按住 ctrl 和 鍵,然後鬆開再按 c 鍵,最後輸入 exit 或者q鍵 並回車 2,g sensor android加速度感測器型別...