当前位置

网站首页> 程序设计 > 开源项目 > 程序开发 > 浏览文章

【Go】Go语言学习笔记-2-函数

作者:小梦 来源: 网络 时间: 2024-02-28 阅读:

函数是构建程序的基础部件,定义如下:
type mytype int
func (p mytype) funcname(q int) (r, s int) {return 0,0}

  • 关键字func用于定义一个函数

  • 函数可以绑定到特定的类型上,叫做“接收者”,以后会详细介绍。

  • funcname是自己定义的函数名称

  • int类型的变量p是输入参数,传值引用,会被复制。

  • r和s是这个函数的 命名返回值,可以只有类型,也可以没有返回值。

  • 函数体只有一个return语句,返回两个值

1. 作用域

定义在函数外部的变量是全局变量,定义在函数内部的变量是局部变量。如果命名覆盖-一个局部变量与一个全局变量有相同的名字,那么在该函数执行的时候,局部变量会覆盖全局变量。

2. 多值返回

Go的函数和方法可以返回多个值,元组没有座位原生类型出现,所以多返回值可能是最佳的选择。

3. 命名返回值

Go的格言:用更少的代码做更多的事。

  • 函数的返回值可以指定一个名字,并且像原始的变量那样使用,就像输入参数一样。

  • 如果对其命名,在函数开始时,会用其类型的零值初始化。

  • 名字不是强制的。

4. 延迟代码

在defer后指定的函数会在函数退出前调用。

  • 延迟的函数是按照先进后出FILO的顺序执行。

  • 利用defer甚至可以修改返回值。

5. 变参

接受不定数量的参数的函数叫做变参函数,例如:
func myfunc(arg ...int) {}
变量arg是一个int类型的slice,这些参数的类型全部都是int。

6. 函数作为值

函数可以赋值给变量,可以在其他地方被调用。

7. 回调

函数作为参数可以在另外一个函数里被调用。

8. 恐慌和恢复

Panic:是一个内建函数,可以中断原有的控制流程,进入一个令人恐慌的流程中,但函数F调用panic,函数F的执行被中断,并且F中的延迟函数会正常执行,然后F返回到调用它的地方。在调用的地方,F的行为就像调用了panic。这一过程继续向上,直到程序崩溃时所有goroutine返回。

Recover:是一个内建函数,可以让进入令人恐慌的流程中得gorountine恢复过来。recover仅在延迟函数中有效。在正常的执行过程中,调用recover会返回nil并且没有其他任何效果。如果当前的gorountine陷入恐慌,调用recover可以捕获到panic的输入值,并且恢复正常的执行。

本文仅记录了一些自认为比较重要的信息,原书中有许多代码的例子和讲解,更为详细。

热点阅读

网友最爱