Go语言学习之声明函数|Go主题月

175 阅读2分钟

作者:看那个码农

公众号:看那个码农

上期内容介绍了Go语言学习之字符串应用|Go主题月

  • 计算字符串长度
  • 遍历字符串,获取每个字符串字符
  • 获取字符串的某一段字符
  • 修改字符串
  • 连接字符串
  • 格式化

本篇内容将继续带领大家走进Go语言的世界。

1.本文简介

Go语言的声明函数

本文的内容主要有以下几点

  • 函数的定义
  • 函数的声明形式
  • 返回单个值的函数
  • 返回多个数的函数
  • 使用具名返回值
  • 把函数作为值保存在变量中

下面我们就来看看这些用法

2.函数的定义

函数是Go语言的一个核心元素,是组织好的、可重复利用的、用来实现单一或相关联功能的代码段,其可以提高应用的模块性和代码的可重复利用性

简单来说,函数接受输入并返回输出。数据流经函数时候,数据的值将被变换。

3.函数的声明形式

Go语言的函数声明以func标识,后面紧接着函数名、参数列表、返回参数列表及函数体,具体形式如下:

func 函数名(参数列表)(返回参数列表){
函数体
}
  • 函数名:由字母、数字、下划线组成,其中函数名的第一个字母不能为数字。
  • 在同一个包内,函数名称不能重复。

一个典型的函数示例是将两个数相加的简单函数,这个函数接受两个数字,将它们相加并返回结果。

package main

import "fmt"

func add(x int,y int) int{
   return x+y
}
func main() {
var a =10
var b =20

fmt.Println(add(a,b))

}

输出为

image.png

4.返回单个值的函数

在最简单情况下,Go语言的函数接受一个输入并返回一个输出。

比如输出前10个斐波拉契数列

  • 斐波那契数列指的是这样一个数列:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368……
  • 特别指出:第0项是0,第1项是第一个1。
  • 这个数列从第三项开始,每一项都等于前两项之和。

代码案例如下:

package main

import "fmt"

func fibonacci(n int) (res int) {
	if n <= 1 {
		res = 1
	} else {
		res = fibonacci(n-1) + fibonacci(n-2)
	}
	return
}

func main() {
	result := 0
	for i := 0; i <= 10; i++ {
		result = fibonacci(i)
		fmt.Printf("第(%d)个斐波拉契数列是: %d\n", i, result)
	}
}

输出为

image.png

该代码是采用递归的方式实现斐波拉契数列,并且案例中的函数是接受一个输入后,返回值就只有一个数

5.返回多个值的函数

Go语言中,可在函数声明中声明多个返回值,让函数返回多个结果,在这种情况下,终止语句可返回多个值。

例如下面的案例:

package main

import "fmt"


func values() (int,int,string)  {

   return 9,8,"加油!"
}

func main() {

   a,b,c:=values()
   fmt.Printf("我吃了%v碗酸辣粉,%v份臭豆腐,%v",a,b,c)
}

输出为

image.png

在该案例中函数定义的时候指出不接受任何参数,并且直接返回两个整数和一个字符串 在函数体中使用return语句返回了多个用逗号分隔的参数。

6.使用具名返回值

具名返回值让函数能够在返回前将值赋给具名变量,这有助于提升函数的可读性,使函数的功能更加明确。

例如下面的案例

package main

import "fmt"

func hello() (x,y string)  {
   x ="Hello "
   y ="World!"
   return
}

func main() {

   fmt.Println(hello())
}

输出为:

image.png

上面这个案例中在函数签名处指定了将返回值的类型为string,并且还指定了变量名(x和y)

这种函数体中,在终止语句return前给具名变量进行了赋值。

7.把函数作为值保存在变量中

在Go语言中,函数也是一个类型,可以和其它数据类型一样被保存在变量中。

例如下面这个案例

package main

import "fmt"


func hello(){
   fmt.Println("Hello,World!")
}

func main() {

   var h func()
   h = hello
   h()
}

输出为

image.png

在上述案例中,首先定义了一个函数变量h,并将一个函数名hello赋给函数变量h,这样在调用函数变量h的时候,实际上就是调用的是已经声明好的函数hello()

如果你觉得这篇内容对你有帮助的话:

1、点赞支持下吧,让更多的人也能看到这篇内容

2、关注公众号:看那个码农,我们一起学习一起进步。

本文正在参与「掘金 2021 春招闯关活动」, 点击查看 活动详情