[函數就是程序中的一個代碼塊,用來去處理一些任務
一般程序肯定會有一個函數(就是main()函數)
函數分為:自己寫的函數和內置函數
自己寫的函數:
結構:
func function_name( [parameter list] ) [return_types] {?
?函數體
}
func :關鍵字,用來聲明這是一個函數
function_name:函數的名稱
[parameter list]:函數的參數列表
[return_types]: 返回值類型
函數體:函數體就是要執行的邏輯代碼的合集
說明:func? 和?function_name必須得有 參數列表和返回值類型 不一定要有
? ? ? ? ? 參數可以有多個,返回值類型也可以有多個
func returnArray(a int, b float32) (float32, string) {
? ?c :=float32(a) + b
? ?name :="張三"
? ?return c, name
}
//這種 有返回值的 必須有返回值類型,返回類型和返回值要對應
內置函數:
內置函數就是Go 語言標準庫提供的函數
比如我們需要計算一個字符串的長度可以用內置的len函數
str :="abcdefg"
strLen :=len(str)
//結果為7
(注意啊,你要計算中文字符里面有多少個漢字要用 utf8.RuneCountInString(str) )
其他的還有很多這種內置函數,可以在這里Golang標準庫文檔參考下
函數參數:
函數的參數 類似于定義的一個函數內的一個局部變量,函數如果使用參數,該變量可稱為函數的形參。
fun sum (a int, b int ) int { }
a和b就是形參
在調用函數的時候,如果參數有形參,則調用時候就必須傳遞參數進去
func main() {
sum(1,2)
}
//此處調用sum函數時候就傳遞了兩個參數進去
函數的參數也是函數的時候
意思就是,在調用一個函數時候,把一個函數作為實參傳遞進去:
func main() {
? a :=2
? c :=10
? getNum(a, getIntNum(c))
}
func getNum(a int, b int) {
fmt.Println(a * b)
}
func getIntNum(a int)int {
return a *10
}
匿名函數
匿名函數(英語:Anonymous Function)在計算機編程中是指一類無需定義標識符(函數名)的函數或子程序,普遍存在于多種編程語言中
Golang是支持匿名函數的,即在需要使用函數時,再定義函數,匿名函數沒有函數名,只有函數體,函數可以被作為一種類型被賦值給函數類型的變量,匿名函數往往以變量方式被傳遞
匿名函數經常被用于實現回調函數,閉包等.
1.申明之后直接調用
func main() {
f :=func(age int) {
fmt.Println("日暮戈薇",age)
}
f(18)
}
2.作為回調函數使用
回調函數:或簡稱回調(Callback 即call then back 被主函數調用運算后會返回主函數),是指通過函數參數傳遞到其它代碼的,某一塊可執行代碼的引用
列:
func main() {
l := []int {1, 22, 55, -10}
vlist(l, func(va int) {
num := va *10
? ? ? fmt.Println("值",num)
})
}
func vlist(list []int, f func(int2 int)) {
for _, v :=range list {
f(v)
}
}