作為一名 Gopher准验,我們很容易形成一個編程慣例:每當有一個實現(xiàn)了 io.Closer 接口的對象 x 時来庭,在得到對象并檢查錯誤之后,會立即使...
Go 語言通過 go 關鍵字開啟 goroutine 讓開發(fā)者可以輕松地實現(xiàn)并發(fā)編程屹逛,而并發(fā)程序的有效運行父能,往往離不開 sync 包的保駕護航饥伊。...
Go語言提供的協(xié)程goroutine可以讓我們很容易地寫出多線程程序犯祠,但是,如何讓這些并發(fā)執(zhí)行的goroutine得到有效地控制窖铡,這是我們需要探...
本文旨在探討Go函數(shù)中的一個問題:為什么Go函數(shù)能支持多參數(shù)返回疗锐,而C/C++坊谁、java不行?這其實牽涉到了一個叫做函數(shù)調用慣例的問題滑臊。 調用慣...
單元測試 如果把開發(fā)程序比作蓋房子口芍,那么我們必須確保所有的用料都是合格的,否則蓋起來的房子就會存在問題雇卷。對于程序而言阶界,我們可以將蓋房子的磚頭、鋼...
在《切片傳遞的隱藏危機》一文中聋庵,小菜刀有簡單地提及到切片擴容的問題膘融。在讀者討論群中,有人舉了以下例子祭玉,想得到一個合理的回答氧映。 為什么結果不是5,...
在《Go精妙的互斥鎖設計》一文中脱货,我們詳細地講解了互斥鎖的實現(xiàn)原理岛都。互斥鎖為了避免競爭條件振峻,它只允許一個線程進入代碼臨界區(qū)臼疫,而由于鎖競爭的存在,...
Some people, when confronted with a problem, think, “I know, I’ll use th...
Go是一門以并發(fā)編程見長的語言扣孟,它提供了一系列的同步原語方便開發(fā)者使用烫堤,例如sync包下的Mutex、RWMutex凤价、WaitGroup鸽斟、Onc...