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加速度感測器型別...