題目來源於牛客網html
成員變量或者函數的首字母表示是否對外部可見。web
switch後面的聲明語句和表達式語句都是能夠選擇的。例如:編程
//能夠什麼都不加 switch: break;
錯誤指的是可能出現問題的地方出現了問題,好比打開一個文件時失敗,這種狀況在人們的意料之中;而異常指的是不該該出現問題的地方出現了問題,好比引用了空指針,這種狀況在人們的意料以外。由此可知,錯誤是業務過程的一部分,而異常不是 。api
Golang中引入error接口類型做爲錯誤處理的標準模式,若是函數要返回錯誤,則返回值類型列表中確定包含error。error處理過程相似於C語言中的錯誤碼,可逐層返回,直到被處理。框架
Golang中引入兩個內置函數panic和recover來觸發和終止異常處理流程,同時引入關鍵字defer來延遲執行defer後面的函數。
一直等到包含defer語句的函數執行完畢時,延遲函數(defer後的函數)纔會被執行,而無論包含defer語句的函數是經過return的正常結束,仍是因爲panic致使的異常結束。你能夠在一個函數中執行多條defer語句,它們的執行順序與聲明順序相反。
當程序運行時,若是遇到引用空指針、下標越界或顯式調用panic函數等狀況,則先觸發panic函數的執行,而後調用延遲函數。調用者繼續傳遞panic,所以該過程一直在調用棧中重複發生:函數中止執行,調用延遲執行函數等。若是一路在延遲函數中沒有recover函數的調用,則會到達該攜程的起點,該攜程結束,而後終止其餘全部攜程,包括主攜程(相似於C語言中的主線程,該攜程ID爲1)。函數
錯誤和異常從Golang機制上講,就是error和panic的區別。不少其餘語言也同樣,好比C++/Java,沒有error但有errno,沒有panic但有throw。post
Golang錯誤和異常是能夠互相轉換的:spa
delete() 函數用於刪除集合的元素, 參數爲 map 和其對應的 key。例如:.net
package main import "fmt" func main() { /* 建立map */ countryCapitalMap := map[string]string{"France": "Paris", "Italy": "Rome", "Japan": "Tokyo", "India": "New delhi"} fmt.Println("原始地圖") /* 打印地圖 */ for country := range countryCapitalMap { fmt.Println(country, "首都是", countryCapitalMap [ country ]) } /*刪除元素*/ delete(countryCapitalMap, "France") fmt.Println("法國條目被刪除") fmt.Println("刪除元素後地圖") /*打印地圖*/ for country := range countryCapitalMap { fmt.Println(country, "首都是", countryCapitalMap [ country ]) } }
一個文件夾下只能有一個包,能夠多個.go文件,但這些文件必須屬於同一個包。線程
Go語言取反方式和C語言不一樣,Go語言不支持~符號。
Go語言中訪問成員變量的方式只有 . 號(由於->是用於通道的操做符,因此Go語言中指針不支持->操做符),而且Go語言足夠智能,可以自動解引用,但智能也是有限的,只能解一次引用,指針的指針還得本身動手解引用。
當使用p的值的時候會自動轉爲使用指針的形式訪問。
官方給出的Beego框架概覽(MVC模式的構造)
A選項正確,這就是互斥鎖的做用
RWMutex.RLock()時,能夠隨便讀,多個goroutin同時讀。不能寫;RWMutex.Lock()時,不能讀,也不能寫。所以BC正確。
不管是RWMutex仍是Mutex,與Lock()對應的都是Unlock(),因此D錯誤。
本次練習瞭解了switch語句、異常與錯誤的區別,delete函數對map的刪除操做,const定義常量;重點關注了指針、同步鎖的內容,同時get到了一個新的基於Go語言的web框架-Beego。