前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >go语言基础2-函数

go语言基础2-函数

作者头像
吐吐吐吐吐葡萄皮
发布2019-04-04 15:05:50
3560
发布2019-04-04 15:05:50
举报
文章被收录于专栏:ai_houziai_houzi

实例

代码语言:javascript
复制
//先声明方法,后定义返回类型
func eval(a, b int, op string) int {
	switch op {

	case "+":
		return a + b
	case "-":
		return a - b
	case "*":
		return a * b
	case "/":
		return a / b
	default:
		panic("方法有误")
	}
}

//带余数除法,两个返回值
func div(a, b int) (q, r int) {
	q = a / b
	r = a % b
	return
}

//函数式
func apply(op func(int, int) int, a, b int) int {
	pointer := reflect.ValueOf(op).Pointer()

	opName := runtime.FuncForPC(pointer).Name()

	fmt.Printf("calling fucntion %s with args (%d ,%d)", opName, a, b)

	return op(a, b)

}

func pow(a, b int) int {
	return int(math.Pow(float64(a), float64(b)))
}

func main() {
	fmt.Println(apply(pow, 3, 4))
    //匿名函数
	fmt.Println(
		apply(func(a int, b int) int {
			return int(math.Pow(float64(a), float64(b)))
		}, 3, 2),
	)
}

//可变参数
func sum(num ...int) int {
	s := 0
	for i := range num {
		s += num[i]
	}
	return s
}
代码语言:javascript
复制
* 返回值类型写在最后面
  • 函数返回多个值时可以起名字
  • 仅用于简单的函数
  • 对于调用者而言没有区别
  • 函数可作为参数
  • 没有默认参数,可选参数
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-07-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档