多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
### 声明函数 ``` func 函数名(参数列表) (返回参数列表) { 函数体 } func 函数名() { 函数体 } 函数名:字母数字下划线组成,不能数字开头。同个包内函数名不能重复 参数列表:由参数名和类型组成,比如(x int) 。同类型可以简写,比如(x,y,int) 返回参数列表:由返回的参数名称和类型组成,比如(num,int)。可以简写只写返回参数的类型,比如(int) 函数体:若函数有返回参数的列表,必须有return语句返回,比如 return num。使用带有变量名返回值时,可以直接使用return。 ``` ``` package main import "fmt" func addsub(x int, y int) (num int, sub int) { // x, y 形参 num = x + y sub = x * y return num, sub } func main() { a := 5 //a,b实参 b := 10 num, sub := addsub(a, b) fmt.Println(num, sub) // 15 50 } ``` ### 函数变量 > **var 变量名称 func(参数列表) (返回参数列表)** > **var 变量名称 func()** > **变量名 := 函数名** > 然后调用,其实都差不多,声明了一个变量调用 ``` package main import "fmt" func addsub(x int, y int) (num int, sub int) { // x, y 形参 num = x + y sub = x * y return num, sub } func main() { a := 5 //a,b实参 b := 10 // var result func(x int, y int) (num int, sub int) // result = addsub result := addsub num, sub := result(a, b) fmt.Println(num, sub) // 15 50 } ``` ### 可变参数 ``` func 函数名 (固定参数列表,v ...T) (返回参数列表) { 函数体 } v,变量名 T,类型 ...,参数 ``` ``` package main import "fmt" func add(slices ...int) int { sum := 0 fmt.Println("传入的切片变量", slices) // 传入的切片变量 [1 2 3 4 5 6 7 8 9 10] for _, value := range slices { // "_" 这个是可变参数 sum += value } return sum } func main() { fmt.Println("1+2+3......+9+10=", add(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)) // 1+2+3......+9+10= 55 } ``` ``` package main import "fmt" func main() { nums := [...]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10} sum := 0 for _, value := range nums { sum += value } fmt.Println(sum) //55 } ``` 可变参数还是牛逼啊!!!!