Go语言基础~D~函数

        package main
import (
"fmt"
"math"
)

type Callback func(a,b int) int //接口(用于函数的回调)

func main() {
var x1 = 11
var x2 = 22
var ret = getMax(x1,x2)
fmt.Println("最大值是:",ret)


var y1 = "a-b-c"
var y2 = "e-f-g"
fmt.Println(getResults(y1,y2))


fun := biFunc()
fmt.Println(fun())
fmt.Println(fun())
fmt.Println(fun())


var c Circle
c.radius = 10.00
fmt.Println("圆的面积为:",c.getArea())


fmt.Println("=========== 递归求阶乘 ============")
i := 5
j := sumAdd(5)
fmt.Printf("数字 %d 的阶乘为:%d\n", i, j)


//测试函数回调
p := test(2,7,add)
fmt.Println(p)

}


//函数 返回两个数中的最大值
func getMax(a,b int) int {
var res int
if a > b {
res = a
} else {
res = b
}
return res
}


//多个返回值的函数
func getResults(a,b string) (string,string) {
return a+" A",b+" B"
}


//Go 语言函数闭包(匿名函数)
/*
Go 语言支持匿名函数,可作为闭包。
匿名函数是一个"内联"语句或表达式。
匿名函数的优越性在于可以直接使用函数内的变量,不必申明。
*/
func biFunc() func() int {
i := 0
return func() int {
i += 1
return i
}
}


//Go 语言函数方法
/*
Go 语言中同时有函数和方法。
一个方法就是一个包含了接受者的函数,
接受者可以是命名类型或者结构体类型的一个值或者是一个指针。
所有给定类型的方法属于该类型的方法集。
语法格式如下:
func (variable_name variable_data_type) function_name() [return_type]{
函数体
}
*/
//定义一个结构体类型和该类型的一个方法
type Circle struct {
radius float64
}
//定义一个求圆面积的方法
//这个方法是Circle类型对象中的方法
func (c Circle) getArea() float64 {
//c.radius是Circle类型对象中的属性
//return 3.14 * c.radius * c.radius
return math.Pow(c.radius,2) * math.Pi
}

//递归
func sumAdd (i int) int {
sum := 1
if i > 0 {
sum = i * sumAdd(i - 1)
}
return sum
}

//函数回调
func test(a,b int,callback Callback) int {
return callback(a,b)
}

func add(a,b int) int {
return a + b
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cpongo11

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值