- 關于golang的參數(shù)傳遞已卸,你有什么思考
值傳遞:int, float, string, bool, 數(shù)組实檀,結構體
其他的均為引用傳遞
- map的鍵可以為什么缸沃?
map[keyType]valueType
在一個map里所有的鍵都是唯一的宜咒,而且必須是支持==和!=操作符的類型,切片赘娄、函數(shù)以及包含切片的結構類型這些類型由于具有引用語義仆潮,不能作為映射的鍵,使用這些類型會造成編譯錯誤:
但是可以通過反射的操作...(不實用)
- panic和recover遣臼;
Painc用法是:用于拋出錯誤性置。Recover()用法是:將Recover()寫在defer中,并且在可能發(fā)生panic的地方之前暑诸,先調用此defer的東西(讓系統(tǒng)方法域結束時蚌讼,有代碼要執(zhí)行。)當程序遇到panic的時候(當然个榕,也可以正常的調用出現(xiàn)的異常情況)篡石,系統(tǒng)將跳過后面的代碼,進入defer西采,如果defer函數(shù)中recover()凰萨,則返回捕獲到的panic的值
image.png
4.init
go語言中init函數(shù)用于包(package)的初始化,該函數(shù)是go語言的一個重要特性,
有下面的特征:
1 init函數(shù)是用于程序執(zhí)行前做包的初始化的函數(shù)胖眷,比如初始化包里的變量等
2 每個包可以擁有多個init函數(shù)
3 包的每個源文件也可以擁有多個init函數(shù)
4 同一個包中多個init函數(shù)的執(zhí)行順序go語言沒有明確的定義(說明)
5 不同包的init函數(shù)按照包導入的依賴關系決定該初始化函數(shù)的執(zhí)行順序
6 init函數(shù)不能被其他函數(shù)調用武通,而是在main函數(shù)執(zhí)行之前,自動被調用