Go語言快速入門筆記(3)--函數,指針,srtuct結構體,interface接口,Error錯誤,panic恐慌和recover恢復

函數func(形參列表)[(返回值)]


func 函數名(形參列表) [返回值/(返回值列表)]{
    ...
    [return 返回值,返回值...]
}

1.形參:
    標準形參:變量名 變量類型, eg. num int
    可變參數:參數名稱 ... 參數類型
    	*傳入的可變參數本質上是切片
    	*可變參數只能放在形參列表末尾
2.返回值:
    *返回值列表能夠寫多個返回值,但須要加圓括號,例:(int,string,...)
    *返回值列表元素:[返回值變量名] 返回值類型
    *若註明返回值變量名則直接使用return,不然須要手動寫return列表
3.匿名函數:
    func (形參列表)[返回值]{
    	...
    	[return 返回值]
    }(實參列表)
4.函數能夠賦值給變量--函數是一等對象
    *函數能夠做爲參數傳入
    *函數能夠做爲返回值返回
5.defer修飾符
    defer fun() //在調用方法前加上defer
    做用:fun函數和實參將壓棧並在本代碼塊返回前的最後時刻逐個彈出執行
複製代碼

指針&*


同C語言
注意:這裏的指針類型請聲明爲`*datatype`
複製代碼

類/結構體struct


//定義:
type 類名 struct{
	屬性名 屬性類型
}

//方法
func (類變量名 類名/*類名) 方法名(形參列表) [(返回值列表)]{
	//函數體
}

//實例化:
var 變量名 類名
變量名 := 類名{k:v, ...}/{v1, v2, ...}
new(類名)		//注意new方法建立的是對象的指針

//屬性訪問:
變量名.成員名

//匿名結構體
struct{
	屬性名 屬性類型
}{實屬性列表}

//匿名字段
屬性聲明中,沒有屬性名只有屬性類型,屬性名爲類型名

1.類名首字母大寫表公有類型,小寫表私有類型	
2.type等價於C語言中的typedef
3.繼承:
    實現:將父類結構體做爲匿名字段寫入子類屬性,即提高字段
    注意點:go語言的繼承沒有重載只有覆蓋
複製代碼

接口interface


//定義
type 接口名稱 interface{
	方法名(形參列表)[()]
	...
}		

//接口實現
實現類直接寫接口內全部方法實現便可

1.接口類型能夠做爲參數傳入函數,實參爲接口的實現類
2.空接口能夠理解爲java中的元類Object
複製代碼

錯誤Error


//建立
errors.New(錯誤信息)	//返回錯誤的指針

//獲取錯誤信息
err.Error()

*注意錯誤Error只是普通結構體,不會形成程序中斷,而panic恐慌會使程序終端
複製代碼

恐慌panic和恢復recover


//恐慌拋出(拋出異常)
panic(恐慌緣由)

//恐慌恢復(異常處理)
defer func(){
	//異常處理代碼
	recover()
}()

*注意recover異常處理匿名函數必須在panic以前被defer
*注意go語言建議儘可能少使用panic恐慌而用多值返回error來代替
複製代碼

Go語言快速入門筆記系列傳送門


Go語言快速入門筆記(1)--變量var,分支if else,循環for,fmt簡單輸入輸出java

Go語言快速入門筆記(2)--值類型和引用類型,silce切片,map映射函數

Go語言快速入門筆記(3)--函數,指針,srtuct結構體,interface接口,Error錯誤,panic恐慌和recover恢復post

相關文章
相關標籤/搜索