Go使用記錄

2021-09-26 22:09:04 字數 752 閱讀 6864

1.liteide

2.goland

借用go的channel工具會阻塞這一特點來實現

先宣告乙個全域性channel變數

var iswriting=make(chan bool,1)
在要加同步鎖的**塊兩端加上下面兩行**

iswriting<-true

//**塊1

<-iswriting

iswriting<-true

//**塊2

<-iswriting

借助channel的阻塞特點,不論是寫入還是取出,只要未完成都會阻塞,因為上面僅申請了乙個位置,所以同一時刻僅能寫入一次,當**塊執行完畢後,再取出,這時才能再次寫入,就比如上面,若是第一塊**先向iswriting寫入true,便會先執行**塊1,執行完後再取出,這時一直等待的第二快**成功向iswriting寫入true,便會執行**塊2,之後再取出

更新:原來go有類似機制:互斥鎖,參考:

其實跟上面也差不多,結構一樣

var iolock sync.mutex
iolock.lock()

//**塊1

iolock.unlock()

iolock.lock()

//**塊2

iolock.unlock()

GO學習記錄2

go 是靜態型別語言,因此變數需要進行型別申明。格式為 var name type。type 的位置在變數名後邊。多變數申明可用 var a int b string c float32 d func bool e struct go 語言的基本型別有 變數申明後,會自動初始化乙個基礎值。變數命名規...

go內建函式 記錄)

go預定義了少數函式,這意味著無需引用任何包就可以使用它們。delete 用於在 map 中刪除例項。new用於各種型別的記憶體分配。參閱 用 new 分配記憶體 的第 55 頁。make 用於內建型別 map slice 和 channel 的記憶體分配。參閱 用 make 分配記憶體 的第 55...

go學習資源彙總記錄

說明 這篇彙總上手golang語言的一些較好的資源,備查 go語言的設計與實現 learn go in y minutes 乙個例子速覽go語言基本語法內容 go by example 花一天左右時間把這兒的例子全敲一遍,就可以開始用go寫程式啦 go 語言設計與實現 更全面深入的學習,看這個 go...