牛客網_Go語言相關練習_判斷&選擇題(4)

題目來源於牛客網html

1、判斷題

成員變量或者函數的首字母表示是否對外部可見。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

    1. 錯誤轉異常,好比程序邏輯上嘗試請求某個URL,最多嘗試三次,嘗試三次的過程當中請求失敗是錯誤,嘗試完第三次還不成功的話,失敗就被提高爲異常了。
    2. 異常轉錯誤,好比panic觸發的異常被recover恢復後,將返回值中error類型的變量進行賦值,以便上層函數繼續走錯誤處理流程。

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語言不支持~符號。

 

2、選擇題

Go語言中訪問成員變量的方式只有 . 號(由於->是用於通道的操做符,因此Go語言中指針不支持->操做符),而且Go語言足夠智能,可以自動解引用,但智能也是有限的,只能解一次引用,指針的指針還得本身動手解引用。

當使用p的值的時候會自動轉爲使用指針的形式訪問。

官方給出的Beego框架概覽(MVC模式的構造)

A選項正確,這就是互斥鎖的做用
RWMutex.RLock()時,能夠隨便讀,多個goroutin同時讀。不能寫;RWMutex.Lock()時,不能讀,也不能寫。所以BC正確。
不管是RWMutex仍是Mutex,與Lock()對應的都是Unlock(),因此D錯誤。

在 Go 語言中,你能夠省略類型說明符 [type],由於 編譯器能夠根據變量的值來推斷其類型
存儲在常量中的數據類型只能夠是 布爾型、數字型(整數型、浮點型和複數)和字符串型
error是對象數據類型,是一個指針,不是常量,因此C錯誤。

 

3、參考資料

Go語言錯誤與異常處理機制

Beego簡介

go web編程之-beego框架

 

4、小結

本次練習瞭解了switch語句、異常與錯誤的區別,delete函數對map的刪除操做,const定義常量;重點關注了指針、同步鎖的內容,同時get到了一個新的基於Go語言的web框架-Beego。

相關文章
相關標籤/搜索