外貿(mào)網(wǎng)站模板下載搜索引擎營銷經(jīng)典案例
Go語言入門心法(一): 基礎(chǔ)語法
Go語言入門心法(二): 結(jié)構(gòu)體
Go語言入門心法(三): 接口
Go語言入門心法(四): 異常體系
?Go語言入門心法(五): 函數(shù)
?一: go語言函數(shù)認知?
函數(shù)相關(guān)認知升維:
函數(shù)的功能就是把相對獨立的某個相同或者時類型的功能抽象處理,使之成為一個獨立的實體;這樣可以避免重復(fù)代碼的編寫;(1)函數(shù)的聲明: func 函數(shù)名(參數(shù)列表) (返回參數(shù)列表) {函數(shù)體}(2)匿名函數(shù)聲明: func(參數(shù)列表) (返回參數(shù)列表) {函數(shù)體}(3)函數(shù)不需要返回值時,省略返回值參數(shù)的列表;函數(shù)參數(shù)的簡寫: (3.1)如果函數(shù)的參數(shù)列表的類型相同時,可以省略前面參數(shù)的類型,只寫后一個參數(shù)的類型;函數(shù)返回值簡寫: (3.2)如果函數(shù)參數(shù)的返回值都是同一類型,在返回值列表中可將返回參數(shù)省略(4)匿名函數(shù)聲明同時賦值func(形參列表)(返回值列表){函數(shù)體}(實參列表)
package mainimport "fmt"/*
函數(shù)相關(guān)認知升維:函數(shù)的功能就是把相對獨立的某個相同或者時類型的功能抽象處理,使之成為一個獨立的實體;這樣可以避免重復(fù)代碼的編寫;(1)函數(shù)的聲明: func 函數(shù)名(參數(shù)列表) (返回參數(shù)列表) {函數(shù)體}(2)匿名函數(shù)聲明: func(參數(shù)列表) (返回參數(shù)列表) {函數(shù)體}(3)函數(shù)不需要返回值時,省略返回值參數(shù)的列表;函數(shù)參數(shù)的簡寫: (3.1)如果函數(shù)的參數(shù)列表的類型相同時,可以省略前面參數(shù)的類型,只寫后一個參數(shù)的類型;函數(shù)返回值簡寫: (3.2)如果函數(shù)參數(shù)的返回值都是同一類型,在返回值列表中可將返回參數(shù)省略(4)匿名函數(shù)聲明同時賦值func(形參列表)(返回值列表){函數(shù)體}(實參列表)
*/
func main() {// 函數(shù)賦值給變量var a = add// 調(diào)用函數(shù)println("調(diào)用add函數(shù): ", a(12, 22))// 使用函數(shù)作為類型聲明一個函數(shù)變量var b func(t, m int) (sub int)println("函數(shù)b = ", b)// 給函數(shù)變量b 賦值同類型的函數(shù)b = subtractionprintln("使用函數(shù)聲明函數(shù)變量并調(diào)用函數(shù): ", b(500, 200))print("調(diào)用無返回值的函數(shù): ")printStr("無參函數(shù)")println()println("聲明同時調(diào)用匿名函數(shù)")println()println()println("=========================聲明同時調(diào)用匿名函數(shù)=========================")func(data string) {println("聲明匿名函數(shù)的同時調(diào)用匿名函數(shù): ", data)}("匿名函數(shù)的實參")println()println("========================先聲明在調(diào)用匿名函數(shù)==========================")f1 := func(a, b int) (t int) {t = a * breturn t}println("調(diào)用匿名函數(shù)[使用先聲明后調(diào)用的方方式]: ", f1(5, 6))}// 定義add函數(shù)
func add(x int, y int) (sum int) {sum = x + yreturn sum
}// 定義subtraction函數(shù),同類型參數(shù),省略前面變量的類型
func subtraction(a, b int) (sub int) {if a > b {sub = a - b} else {sub = b - a}return sub
}// 無返回值的函數(shù)省略返回值列表
func printStr(content string) {fmt.Printf("傳入的參數(shù) %v", content)
}
運行效果:
GOROOT=D:\program_file_worker\go1.20 #gosetup
GOPATH=D:\program_file_worker\go1.20\bin;C:\Users\Administrator\go #gosetup
D:\program_file_worker\go1.20\bin\go.exe build -o C:\Users\Administrator\AppData\Local\Temp\GoLand\___go_build_OOPFunctionToGrammar_go.exe D:\program_file\go_workspace\org.jd.data\funcation\OOPFunctionToGrammar.go #gosetup
C:\Users\Administrator\AppData\Local\Temp\GoLand\___go_build_OOPFunctionToGrammar_go.exe
調(diào)用add函數(shù): ?34
函數(shù)b = ?0x0
使用函數(shù)聲明函數(shù)變量并調(diào)用函數(shù): ?300
調(diào)用無返回值的函數(shù): 傳入的參數(shù) 無參函數(shù)
聲明同時調(diào)用匿名函數(shù)
=========================聲明同時調(diào)用匿名函數(shù)=========================
聲明匿名函數(shù)的同時調(diào)用匿名函數(shù): ?匿名函數(shù)的實參========================先聲明在調(diào)用匿名函數(shù)==========================
調(diào)用匿名函數(shù)[使用先聲明后調(diào)用的方方式]: ?30Process finished with the exit code 0
二: go語言可變參數(shù)與函數(shù)變量
函數(shù)變量||函數(shù)可變參數(shù):在go語言中,函數(shù)是一種類型,可以將其保存在變量中函數(shù)變量的聲明如下:var 變量名稱 func(形成列表)(返回值列表)
? ? ? ?func 函數(shù)名(實參列表,...參數(shù)類型)(返回值類別){函數(shù)體?}
package mainimport "fmt"/*
函數(shù)變量||函數(shù)可變參數(shù):在go語言中,函數(shù)是一種類型,可以將其保存在變量中函數(shù)變量的聲明如下:var 變量名稱 func(形成列表)(返回值列表)
*/
func main() {println("========================go語言中函數(shù)的聲明======================")a := 100b := 20var f1 func(x int, y int) (sum int, sub int)f1 = addSubsum, sub := f1(a, b)fmt.Println(a, "+", b, sum)fmt.Println(a, "-", b, sub)println("調(diào)用返回默認值的函數(shù): ")e, f, g := defaultValue()fmt.Printf("調(diào)用函數(shù)返回默認值分別為: %v ,%v ,%v ", e, f, g)h, m, n := defaultValueInit()println()fmt.Printf("調(diào)用函數(shù)返回默認值分別為: %v ,%v ,%v \n", h, m, n)println()println()fmt.Println("1+2+3+4+5+6+7+8+9+10 = ", addSum(1, 2, 3, 4, 5, 6, 7, 8, 9, 10))println("===========================來看看go語言內(nèi)置的可變參數(shù)的函數(shù)===========================")println(`看看println函數(shù)的源代碼:func println(args ...Type)看看fmt.printf函數(shù)的源代碼:func Printf(format string, a ...any) (n int, err error) {return Fprintf(os.Stdout, format, a...)}`)}// 定義函數(shù)是給出默認的返回值
func defaultValue() (a int, b string, c bool) {return
}// 定義函數(shù)是給出默認的返回值
func defaultValueInit() (a string, b string, c bool) {return "1", "", false
}func addSub(x int, y int) (sum int, sub int) {sum = x + ysub = x - yreturn sum, sub
}// 定義可變參數(shù)函數(shù)
func addSum(slice ...int) int {sum := 0for _, value := range slice {sum = sum + value}return sum
}
運行效果:
GOROOT=D:\program_file_worker\go1.20 #gosetup
GOPATH=D:\program_file_worker\go1.20\bin;C:\Users\Administrator\go #gosetup
D:\program_file_worker\go1.20\bin\go.exe build -o C:\Users\Administrator\AppData\Local\Temp\GoLand\___go_build_OOPFunctionToParameterUserMultParams_go.exe D:\program_file\go_workspace\org.jd.data\funcation\OOPFunctionToParameterUserMultParams.go #gosetup
C:\Users\Administrator\AppData\Local\Temp\GoLand\___go_build_OOPFunctionToParameterUserMultParams_go.exe
========================go語言中函數(shù)的聲明======================
100 + 20 120
100 - 20 80
調(diào)用返回默認值的函數(shù):
調(diào)用函數(shù)返回默認值分別為: 0 , ,false
調(diào)用函數(shù)返回默認值分別為: 1 , ,false
1+2+3+4+5+6+7+8+9+10 = ?55
===========================來看看go語言內(nèi)置的可變參數(shù)的函數(shù)===========================
? ? ? ? ?看看println函數(shù)的源代碼:
? ? ? ? ?func println(args ...Type)
? ? ? ? ?看看fmt.printf函數(shù)的源代碼:? ? ? ? ?func Printf(format string, a ...any) (n int, err error) {
? ? ? ? ? ? ? ? ? return Fprintf(os.Stdout, format, a...)
? ? ? ? ?}
Process finished with the exit code 0
?
三: 函數(shù)閉包認知
四: 函數(shù)延遲執(zhí)行|內(nèi)置函數(shù)
忙著去耍帥,后期補上..........