go基礎語法50問,來看看你的go基礎合格了嗎?( 四 )


// 錯誤示例func main() { x := []string{"a", "b", "c"} for v := range x {fmt.Println(v) // 1 2 3 }}// 正確示例func main() { x := []string{"a", "b", "c"} for _, v := range x { // 使用 _ 丟棄索引fmt.Println(v) }}23.說說go語言中的switch語句單個 case 中,可以出現多個結果選項 。只有在 case 中明確添加 fallthrough關鍵字 , 才會繼續執行緊跟的下一個 case 。
24.說說go語言中有沒有隱藏的this指針方法施加的對象顯式傳遞,沒有被隱藏起來 。
golang 的面向對象表達更直觀,對于面向過程只是換了一種語法形式來表達方法施加的對象不需要非得是指針 , 也不用非得叫 this 。
25.go語言中的引用類型包含哪些切片(slice)、字典(map)、通道(channel)、接口(interface) 。
26.說說go語言的main函數main 函數不能帶參數;main 函數不能定義返回值 。main 函數所在的包必須為 main 包;main 函數中可以使用 flag 包來獲取和解析命令行參數 。
27.go語言觸發異常的場景有哪些

  • 空指針解析
  • 下標越界
  • 除數為0
  • 【go基礎語法50問,來看看你的go基礎合格了嗎?】調用 panic 函數
28.說說go語言的beego框架
  • beego 是一個 golang 實現的輕量級HTTP框架
  • beego 可以通過注釋路由、正則路由等多種方式完成 url 路由注入
  • 可以使用 bee new 工具生成空工程,然后使用 bee run 命令自動熱編譯
29.說說go語言的goconvey框架
  • goconvey 是一個支持 golang 的單元測試框架
  • goconvey 能夠自動監控文件修改并啟動測試,并可以將測試結果實時輸出到web界面
  • goconvey 提供了豐富的斷言簡化測試用例的編寫
30.GoStub的作用是什么
  • GoStub 可以對全局變量打樁
  • GoStub 可以對函數打樁
  • GoStub 不可以對類的成員方法打樁
  • GoStub 可以打動態樁,比如對一個函數打樁后,多次調用該函數會有不同的行為
31.go語言編程的好處是什么
  • 編譯和運行都很快 。
  • 在語言層級支持并行操作 。
  • 有垃圾處理器 。
  • 內置字符串和 maps 。
  • 函數是 go 語言的最基本編程單位 。
32.說說go語言的select機制
  • select 機制用來處理異步 IO 問題
  • select 機制最大的一條限制就是每個 case 語句里必須是一個 IO 操作
  • golang 在語言級別支持 select 關鍵字
33.解釋一下go語言中的靜態類型聲明靜態類型聲明是告訴編譯器不需要太多的關注這個變量的細節 。
靜態變量的聲明,只是針對于編譯的時候, 在連接程序的時候,編譯器還要對這個變量進行實際的聲明 。
34.go的接口是什么
  • 在 go 語言中,interface 也就是接口,被用來指定一個對象 。接口具有下面的要素:
  • 一系列的方法
  • 具體應用中并用來表示某個數據類型
  • 在 go 中使用 interface 來實現多態
35.Go語言里面的類型斷言是怎么回事類型斷言是用來從一個接口里面讀取數值給一個具體的類型變量 。類型轉換是指轉換兩個不相同的數據類型 。
36.go語言中局部變量和全局變量的缺省值是什么全局變量的缺省值是與這個類型相關的零值 。
37.go語言編程的好處是什么
  • 編譯和運行都很快 。
  • 在語言層級支持并行操作 。
  • 有垃圾處理器 。
  • 內置字符串和 maps 。
  • 函數是 go 語言的最基本編程單位 。
38.解釋一下go語言中的靜態類型聲明靜態類型聲明是告訴編譯器不需要太多的關注這個變量的細節 。靜態變量的聲明,只是針對于編譯的時候, 在連接程序的時候,編譯器還要對這個變量進行實際的聲明 。
39.模塊化編程是怎么回事模塊化編程是指把一個大的程序分解成幾個小的程序 。這么做的目的是為了減少程序的復雜度,易于維護,并且達到最高的效率 。
40.Golang的方法有什么特別之處函數的定義聲明沒有接收者 。
方法的聲明和函數類似,他們的區別是:方法在定義的時候,會在func和方法名之間增加一個參數,這個參數就是接收者,這樣我們定義的這個方法就和接收者綁定在了一起,稱之為這個接收者的方法 。
Go語言里有兩種類型的接收者:值接收者和指針接收者 。使用值類型接收者定義的方法,在調用的時候,使用的其實是值接收者的一個副本 , 所以對該值的任何操作,不會影響原來的類型變量 ?!?相當于形式參數 。

推薦閱讀