func 函數名(形參列表) [返回值/(返回值列表)]{
...
[return 返回值,返回值...]
}
1.形參:
標準形參:變量名 變量類型, eg. num int
可變參數:參數名稱 ... 參數類型
*傳入的可變參數本質上是切片
*可變參數只能放在形參列表末尾
2.返回值:
*返回值列表能夠寫多個返回值,但須要加圓括號,例:(int,string,...)
*返回值列表元素:[返回值變量名] 返回值類型
*若註明返回值變量名則直接使用return,不然須要手動寫return列表
3.匿名函數:
func (形參列表)[返回值]{
...
[return 返回值]
}(實參列表)
4.函數能夠賦值給變量--函數是一等對象
*函數能夠做爲參數傳入
*函數能夠做爲返回值返回
5.defer修飾符
defer fun() //在調用方法前加上defer
做用:fun函數和實參將壓棧並在本代碼塊返回前的最後時刻逐個彈出執行
複製代碼
同C語言
注意:這裏的指針類型請聲明爲`*datatype`
複製代碼
//定義:
type 類名 struct{
屬性名 屬性類型
}
//方法
func (類變量名 類名/*類名) 方法名(形參列表) [(返回值列表)]{
//函數體
}
//實例化:
var 變量名 類名
變量名 := 類名{k:v, ...}/{v1, v2, ...}
new(類名) //注意new方法建立的是對象的指針
//屬性訪問:
變量名.成員名
//匿名結構體
struct{
屬性名 屬性類型
}{實屬性列表}
//匿名字段
屬性聲明中,沒有屬性名只有屬性類型,屬性名爲類型名
1.類名首字母大寫表公有類型,小寫表私有類型
2.type等價於C語言中的typedef
3.繼承:
實現:將父類結構體做爲匿名字段寫入子類屬性,即提高字段
注意點:go語言的繼承沒有重載只有覆蓋
複製代碼
//定義
type 接口名稱 interface{
方法名(形參列表)[()]
...
}
//接口實現
實現類直接寫接口內全部方法實現便可
1.接口類型能夠做爲參數傳入函數,實參爲接口的實現類
2.空接口能夠理解爲java中的元類Object
複製代碼
//建立
errors.New(錯誤信息) //返回錯誤的指針
//獲取錯誤信息
err.Error()
*注意錯誤Error只是普通結構體,不會形成程序中斷,而panic恐慌會使程序終端
複製代碼
//恐慌拋出(拋出異常)
panic(恐慌緣由)
//恐慌恢復(異常處理)
defer func(){
//異常處理代碼
recover()
}()
*注意recover異常處理匿名函數必須在panic以前被defer
*注意go語言建議儘可能少使用panic恐慌而用多值返回error來代替
複製代碼
Go語言快速入門筆記(1)--變量var,分支if else,循環for,fmt簡單輸入輸出java
Go語言快速入門筆記(2)--值類型和引用類型,silce切片,map映射函數
Go語言快速入門筆記(3)--函數,指針,srtuct結構體,interface接口,Error錯誤,panic恐慌和recover恢復post