go语言学习--函数
Posted 清风明月li
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了go语言学习--函数相关的知识,希望对你有一定的参考价值。
函数是基本的代码块,用于执行一个任务,
go语言至少要有个main()函数
可以通过函数来划分不同的功能,逻辑上每个函数执行的是指定的任务。
函数声明告诉了编译器函数的名称,返回类型,和参数。
go语言标准库提供了多种可动用的内置函数,如len()函数可以接受不同类型参数并返回改类型的长度,如果我们传入的是
字符串则返回字符串的长度,如果传入的是数组,则返回数组中包含的元素个数。
函数的定义格式如下:
func function_name( [参数列表] [返回类型])
函数体
// func: 函数由func开始声明
// func_name: 函数名称,参数列表和返回值类型构成了函数签名。
// parameter list: 参数列表,就像一个占位符,当函数被调用时,可以将值传递给参数,这个值被称为实际参数,
参数列表指定的是参数类型、顺序、参数个数。参数是可选的,也就是说函数也可以不包含参数。
// return_types: 返回类型,函数返回一列值。是该列值的数据类型。有些功能不需要返回值,这种情况下return_types不是
必须的。
//函数体: 函数定义的代码集合。
//函数返回两个数的最大值
func max(num1,num2 int) int
var result int
if (num1 > num2)
result = num1
else
result = num2
return result
//函数的调用
当创建函数时,定义了函数需要做什么,通过调用改函数来执行指定的任务,
调用函数,向函数传递参数,并返回值:
package main
import "fmt"
func main()
//定义全局变量
var a int = 100
var b int = 200
var ret int
//调用函数并返回最大值
ret = max(a,b)
fmt.Printf("最大值是:%d\\n",ret)
//函数返回两个数的最大值
func max(num1,num2 int) int
//定义局部变量
var result int
if (num1 > num2)
result = num1
else
result = num2
return result
//返回多个值
package main
import "fmt"
func swap(x,y string) (string,string)
return y,x
func main()
a,b := swap("google","lqb")
fmt.Println(a,b)
//函数参数
函数如果使用参数,改变量可称为函数的形参
形参就像定义在函数体内的局部变量
调用函数,可以通过两种方式来传递参数:1,值传递,在调用函数时将时间参数复制一份传递到函数中,这样在函数中如果对参数进行修改
将不会影响到实际参数。2,引用传递,将影响到实际参数。
默认情况下,go语言使用的是值传递,即在调用的过程中不会影响到实际参数。
//函数的用法
1、函数作为另外一个函数的实参,函数定义后可作为另外一个函数的实参传入
2、闭包,是匿名函数,可在动态编程中使用
3、方法,就是一个包含了接受者的函数。
5.go语言变量的作用域
作用域为已声明标识符的常量、变量、类型、函数或包,在源码中作用范围。
go语言变量可以在三个地方声明:
1.函数体内定义的变量称为局部变量
2.函数体外定于的变量称为全局变量
3.函数定义中的变量为形式参数
5.1、局部变量
在函数体内声明的变量称为局部变量,他们的作用域只在函数体内,参数和返回值变量也是局部变量。
实例中main()函数使用了局部变量a,b,c
package main
import "fmt"
func main()
//声明局部变量
var a,b,c int
//初始化参数
a = 10
b = 20
c = a + b
fmt.Printf("a+b的结果是: a = %d, b= %d, and c = %d\\n", a , b , c)
以上是关于go语言学习--函数的主要内容,如果未能解决你的问题,请参考以下文章