題目來源於牛客網 一、選擇題 Go語言自帶垃圾回收機制。 如果是值傳遞的話子函數對map修改不會影響父函數中的map,如果是地址傳遞則會影響。 go語言編譯器會自動在以標識符、數字字面量、字母字面量、字元串字面量、特定的關鍵字(break、continue、fallthrough和return)、增 ...
題目來源於牛客網
一、選擇題
Go語言自帶垃圾回收機制。
如果是值傳遞的話子函數對map修改不會影響父函數中的map,如果是地址傳遞則會影響。
go語言編譯器會自動在以標識符、數字字面量、字母字面量、字元串字面量、特定的關鍵字(break、continue、fallthrough和return)、增減操作符(++和--)、或者一個右括弧、右方括弧和右大括弧(即)、]、})結束的非空行的末尾自動加上分號。 B選項,6是數字字面量,所以在6的後面會自動加上一個分號,導致編譯出錯。 D選項,gofmt會自動把6後面的“,”去掉,關掉gofmt後測試,也能通過編譯,正常運行。
可以聲明一個未指定大小的數組來定義切片,var identifier [ ]type 切片不需要說明長度;
或使用make函數來創建切片 var slice1 []type = make([ ]type ,Len) ;
也可以指定容量 make([ ]T ,length, capacity)。
只要兩個介面擁有相同的方法列表(次序不同不要緊),那麼它們就是等價的,可以相互賦值。-AB正確。
Go語言介面是否可以賦值,是在編譯期就確定的。D錯誤。
介面的查詢是在運行期確定。C正確。
//interface{}本身是type,怎麼賦值呢?只可能出現: var v1 interface1 var v2 interface2 v1 = v2
bool類型與int類型無法強制轉換。D錯誤。
<- ch 可以單獨調用獲取通道的(下一個)值,當前值會被丟棄,但是可以用來驗證。
D選項應改為 ch <– value
mock對象的註入:
mock對象的行為都註入到控制器以後,我們接著要將mock對象註入給interface,使得mock對象在測試中生效。
在使用GoStub框架之前,很多人都使用土方法,比如Set。這種方法有一個缺陷:當測試用例執行完成後,並沒有回滾interface到真實對象,有可能會影響其它測試用例的執行。所以,筆者強烈建議大家使用GoStub框架完成mock對象的註入。- 全局變數可通過GoStub框架打樁
- 過程可通過GoStub框架打樁
- 函數可通過GoStub框架打樁
- interface可通過GoMock框架打樁
二、參考資料
三、總結
本次主要針對map,異常處理,切片,介面,布爾變數的賦值、channel的語法進行了練習,並瞭解了GoMock框架。