内容简介:几乎所有编程语言都支持函数,编写函数的目的在于将复杂的问题分解为一系列简单的任务来处理,此外同一个函数还可以被多次复用,这一结构在面向过程的函数式编程中至关重要。同为类 C 语言,Go 语言的函数和 PHP 函数的基本结构差不多,只是具体细节有所差异,在 Go 语言中,函数的基本组成为:关键字在 Go 语言中,函数主要有三种类型:我们将从普通函数的基本定义和调用开始,揭开 Go 函数的面纱。
几乎所有编程语言都支持函数,编写函数的目的在于将复杂的问题分解为一系列简单的任务来处理,此外同一个函数还可以被多次复用,这一结构在面向过程的函数式编程中至关重要。同为类 C 语言,Go 语言的函数和 PHP 函数的基本结构差不多,只是具体细节有所差异,在 Go 语言中,函数的基本组成为:关键字 func
、函数名、参数列表、返回值、函数体和返回语句,作为强类型语言,无论是参数还是返回值,在定义函数时,都要声明其类型。
在 Go 语言中,函数主要有三种类型:
- 普通函数
- 匿名函数(闭包)
- 类方法
我们将从普通函数的基本定义和调用开始,揭开 Go 函数的面纱。
函数定义
在前面的第一个 Go 程序教程中,我们已经给大家演示过函数的基本定义和调用示例,这里我们用一个最简单的加法函数来进行详细说明:
func add(a, b int) int { return a + b }
如果我们调用 add(1, 2)
,返回结果是 3
:
func main() { fmt.Println(add(1, 2)) // 3 }
下面我们以 add
函数为例介绍函数的定义,如果函数的参数列表中包含若干个类型相同的参数,比如上面例子中的 a
和 b
,则可以在参数列表中省略前面变量的类型声明,只保留最后一个,如下所示:
func add(a, b int) int { // ... }
紧随参数列表之后的是该函数返回值的类型(这一点和 Go 变量一样,将类型放在最后,而与其他静态强类型语言,如 Java 、C 的函数声明方式不同):
func add(a, b int) int { // ... }
此外,Go 函数还支持多个返回值,后面我们介绍函数返回值的时候,再具体讨论。
函数调用
函数调用非常方便,如果是在同一个包中(即定义在同一个目录下的 Go 文件中),只需直接调用即可:
func main() { fmt.Println(add(1, 2)) // 3 }
如果是在不同的包中,需要先导入了该函数所在的包,然后才能调用该函数,比如,我们将 add
函数放到单独的 mymath
包中(函数名首字母改为大写):
package mymath func Add(a, b int) int { return a + b }
然后我们可以这样在 main
包中调用 Add
函数:
package main import ( "fmt" "mymath" ) func main() { fmt.Println(mymath.Add(1, 2)) // 3 }
在跨包调用时,只有首字母大写的函数才可以被调用,这个涉及到包的可见性,后面在介绍面向对象时会详细讨论这个,这里你只需要了解首字母大写的 Go 函数即相当于其它语言的 public 函数,Go 语言中没有 public
、 protected
、 private
之类的关键字,它是通过首字母的大小写来区分可见性:首字母小写的函数只能在同一个包中访问,首字母大写的函数才可以在其他包中调用,Go 文件中定义的全局变量也是如此。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Python 函数调用&定义函数&函数参数
- Linux内核如何替换内核函数并调用原始函数
- gdb 如何调用函数?
- 汇编层面分析函数调用
- 理解 Golang 的函数调用
- Wasm 介绍(六):间接函数调用
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Learn Python 3 the Hard Way
Zed A. Shaw / Addison / 2017-7-7 / USD 30.74
You Will Learn Python 3! Zed Shaw has perfected the world’s best system for learning Python 3. Follow it and you will succeed—just like the millions of beginners Zed has taught to date! You bring t......一起来看看 《Learn Python 3 the Hard Way》 这本书的介绍吧!