分享
  1. 首页
  2. 文章

GO语言学习笔记(五)GO语言函数的简易计算

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

一、计算示例

package main
import "fmt"
func main() {
 a := 100
 b := 2
 fmt.Printf("%d + %d = %d\n", a, b, Add(a, b))
 fmt.Printf("%d - %d = %d\n", a, b, Sub(a, b))
 fmt.Printf("%d * %d = %d\n", a, b, Mul(a, b))
 fmt.Printf("%d / %d = %d\n", a, b, Div(a, b))
}
func Add(x, y int) int {
 return x + y
}
func Sub(x, y int) int {
 return x - y
}
func Mul(x, y int) int {
 return x * y
}
func Div(x, y int) int {
 return x / y
}

运行代码,输出结果如下:

100 +たす 2 = 102
100 -ひく 2 = 98
100 * 2 = 200
100 / 2 = 50

解释:在GO语言中,函数的定义使用func关键字声明Add是一个函数,函数中需要两个传参,分别是x和y,并指定x和y都是int类型。大括号前的那个int是Add函数的返回值的类型,定义Add函数返回的值也必须是int类型。

二、多返回值特性
GO语言是一个多返回值类型语言,如果是多个返回值的话,可以写成(int, int), return,必须返回数量相等的返回值,示例如下:

package main
import "fmt"
func vals() (int, int) {
 return 3, 7
}
func main() {
 a, b := vals()
 fmt.Println(a)
 fmt.Println(b)
 _, c := vals() //使用空白的标识符_,可以选择不接收返回值
 fmt.Println(c)
} 

三、匿名函数和闭包
匿名函数:就是没有名称的函数
闭包:在一个函数中,又定义了一个函数叫闭包

示例如下:

package main
import "fmt"
func intSeq() func() int {
 i := 0
 return func() int {
 i++
 return i
 }
}
func main() {
 nextInt := intSeq()
 fmt.Println(nextInt())
 fmt.Println(nextInt())
 fmt.Println(nextInt())
}

执行结果如下:

1
2
3

解释:1)func intSeq() func() int {} //首先顶一个intSeq()的函数,这个函数比较特殊,它的返回值也是一个函数func(),func()这个函数呢是没有名称的函数,也就是匿名函数,因为func()是在intSeq这个函数中的函数,所以func()又可以被称为闭包,最终intSeq()是将func()函数作为返回值返回。
2)nextInt := intSeq() //把intSeq()函数赋值给nextInt这个变量
3)fmt.Println(nextInt()) //输出nextInt的值,nextInt就调用intSeq()
4)
i := 0
return func() int {
i++
return i //给i变量初始化一个值为0,因为nextInt调用intSeq(),而func()的返回值就是intSeq()的返回值,则变量i循环增加,每次增加1,就这样每循环一次,新的i的变量就得到新值,i就把值返回给func()这个匿名函数,然后func()这个匿名函数又把值返回给intSeq()这个函数,然后intSeq()函数又把值赋值给nextInt变量,最终输出出来。


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

本文来自:51CTO博客

感谢作者:Mr大表哥

查看原文:GO语言学习笔记(五)GO语言函数的简易计算

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

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

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏