1、函数的返回值
package main
import "fmt"
func Result(num1 int, num2 int) int {
return num1 + num2
}
func Result2(num1 int, num2 int) (sum int) {
sum = num1 + num2
return sum
}
func Result3() (num1 int, num2 int) {
num1 = 10
num2 = 20
return num1, num2
}
func main() {
println("Result == ", Result(1, 2))
println("Result2 == ", Result2(1, 2))
var s1 int
var s2 int
s1, s2 = Result3()
fmt.Printf("s1=%d,s2=%d", s1, s2)
}
输出结果:
Result == 3
Result2 == 3
s1=10,s2=20
2、匿名函数
package main
import "fmt"
type FuncType func(int, int)
func main() {
a := 10
b := 20
//第一种
var f FuncType
f = func(a int, b int) {
fmt.Println(a + b)
}
f(a, b)
//第二种
f2 := func(a int, b int) int {
return a + b
}
v := f2(10, 20)
fmt.Println(v)
//第三种
f3 := func() int {
return a + b
}
v2 := f3()
fmt.Println(v2)
}
输出结果:
30
30
30
3、函数类型
package main
import "fmt"
func demo1(a int, b int) {
fmt.Println(a + b)
}
func demo2(s1 int, s2 int) {
fmt.Println(s1 + s2)
}
//定义函数类型 为已存在的数据类型起别名
type FUNCDEMO func(int, int)
func main() {
//demo1(10, 20)
//函数的名字表示一个地址 函数在代码区的地址
fmt.Println(demo1)
//f是func (int,int)函数类型定义的变量
//var f func(int, int)
var f FUNCDEMO
//函数类型定义的变量结束函数的地址
f = demo1
fmt.Println(f)
//通过f调用函数
f(10, 20)
f = demo2
f(1, 2)
fmt.Printf("%T", f)
}
输出结果:
0xb894e0
0xb894e0
30
3
main.FUNCDEMO
4、不定参函数
package main
import "fmt"
//...不定参 在函数调用时可以传递不定量(0-n)的参数
//不定参使用数据格式为切片
func sum(arr ...int) {
sum := 0
//i -> index 下标 v -> value 值
//_匿名变量 如果数据的值不需要接收 可以通过匿名变量来接收数据
for _, v := range arr {
sum += v
}
fmt.Println("求和:", sum)
}
func main() {
sum(1, 2, 3, 4)
//fmt.Println 就是一个不定参的格式
}
输出结果:
求和: 10