入门:基础语法(五)函数

ace_kylin · · 1791 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

函数是一个编程语言的灵魂,下面介绍一下golang的函数,我们做一个输入两个数,一个符号,判断符号种类进行计算的函数:

package main

import "fmt"

func main() {
	if result, err := eval(1, 3, "÷"); err != nil {
		fmt.Println("ERR:", err)
	} else {
		fmt.Println(result)
	}
}
func eval(a, b int, op string) (int, error) {
	switch op {
	case "+":
		return a + b, nil
	case "-":
		return a - b, nil
	case "*":
		return a * b, nil
	case "/":
		return a / b, nil
	default:
		return 0, fmt.Errorf("Unknown operation:%s", op)
	}
}

我们可以看一下go的源码,不难发现,所有函数几乎都是一个返回值一个err,我们也根据源码的规则定义了eval()函数,这是golang函数的第一个特性:多返回值

用switch的方法去判断太土,小学生才这么做,我们用函数编程来重做一个:

package main

import (
	"fmt"
	"math"
)

func main() {
	fmt.Println("pow(2,3)", apply(pow, 2, 3))
	fmt.Println("mul(2,3)", apply(mul, 2, 3))
}
func apply(calcFunc func(int, int) int, a, b int) int {
	return calcFunc(a, b)
}
func pow(a, b int) int {
	return int(math.Pow(float64(a), float64(b)))
}
func mul(a, b int) int {
	return a * b
}

 


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1791 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传