go語(yǔ)言沒有使用像java python等語(yǔ)言的try catch/except 語(yǔ)句來處理異常,而是使用它特有的panic,recover,defer來捕獲和處理異常
成都創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、南靖網(wǎng)絡(luò)推廣、小程序制作、南靖網(wǎng)絡(luò)營(yíng)銷、南靖企業(yè)策劃、南靖品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);成都創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供南靖建站搭建服務(wù),24小時(shí)服務(wù)熱線:18982081108,官方網(wǎng)址:www.cdcxhl.com
分析:
divide是一個(gè)做除法的函數(shù),可能會(huì)出現(xiàn)除數(shù)為0的錯(cuò)誤,所以在函數(shù)一開頭就定義了一個(gè)defer匿名函數(shù)(注意這里的匿名函數(shù)定義完后面要帶上括號(hào)才能執(zhí)行),這個(gè)匿名函數(shù)被defer修飾了所以只在divide函數(shù)執(zhí)行完才會(huì)執(zhí)行,而不是一進(jìn)來就執(zhí)行。后面判斷b是否等于0,如果為零的話我們手動(dòng)使用panic拋出了異常,這個(gè)異常是在divide函數(shù)退出前執(zhí)行的defer匿名函數(shù)里通過recover()來捕獲的,如果err不為空就說明發(fā)生了錯(cuò)誤,打印error happen!和panic拋出的divided by zero!! 然后主協(xié)程返回到主函數(shù)main里,繼續(xù)執(zhí)行后面的打印
go語(yǔ)言函數(shù)不能嵌套,但是在函數(shù)內(nèi)部可以定義匿名函數(shù),實(shí)現(xiàn)一下簡(jiǎn)單功能調(diào)用。
所謂匿名函數(shù)就是,沒有名稱的函數(shù)。
語(yǔ)法格式如下:
當(dāng)然可以既沒有參數(shù),可以沒有返回值
運(yùn)行結(jié)果
自己執(zhí)行
運(yùn)行結(jié)果
其實(shí),這就是在調(diào)用這個(gè)函數(shù),等同于:
例如,
運(yùn)行結(jié)果:
又如:
運(yùn)行結(jié)果一樣的。
函數(shù)還可以作為返回值,但是在Go語(yǔ)言中不能再像之前那樣定義函數(shù)了,只能定義匿名函數(shù)。匿名函數(shù)就是沒有函數(shù)名的函數(shù)。
閉包 = 函數(shù) + 外層變量的引用