Go语言 函数
本文主要为Go语言函数内容作用、声明、参数、返回值及其示例的学习整理笔记。
目录
函数
函数的作用
通过函数,可以把开发任务分解成一个个小的单元,
这些小单元可以被其他单元复用,
进而提高开发效率、降低代码重合度
函数声明
变量名称在前,变量类型在后
变量名称叫作参数名称,也就是函数的形参
函数声明格式
func main(){
}
任何一个函数的定义,都有一个 func关键字
main 是函数的名字
main 函数名字后面的一对括号()是不能省略的
括号里可以定义函数使用的参数
括号()后还可以有函数的返回值
最后是大括号 函数体
说明
函数格式及参数示例:
func funcName(params) result {
body
}
// 关键字 func
// 函数名字 funcName
// 函数的参数 params,用来定义形参的变量名和类型
// result 是返回的函数值,用于定义返回值的类型
// body 就是函数体,可以在这里写函数的代码逻辑
函数示例
两数相加的求和函数,示例如下:
func sum(a int,b int) int {
return a+b
}
函数调用
在main函数中对sum函数进行调用。
示例如下:
func main() {
result := sum(1, 2)
fmt.Println(result)
}
优化sum形参
优化sum形参类型定义,如果两个数类型相同即可省略第一个参数的类型定义。
示例如下:
func sum(a, b int) int {
return a + b
}
多值返回
Go 语言的函数可以返回多个值,也就是多值返回。
比如:第一个值返回函数的结果,第二个值返回函数出错的信息。
还是以求和函数为例。示例如下:
func main() {
result, flag := sum(-1, 2)
fmt.Println(result, flag)
}
func sum(a, b int) (int, error) {
if a < 0 || b < 0 {
return 0, errors.New("a或者b不能为负数")
}
return a + b, nil
}
忽略错误
返回多个值可以使用逗号分隔,但是返回类型要与返回类型声明相同
如果不想要error变量,可以用以下方式丢弃:
result, _ := sum(-1, 0)
命名返回参数
函数的返回值也可以有变量名称。
如果在函数内部对返回变量进行命名,则return也可以不进行返回。
示例如下:
func sum(a, b int) (sum int, err error) {
if a < 0 || b < 0 {
return 0, errors.New("a或者b不能为负数")
}
sum = a + b
err = nil
return
}
可变参数
可变参数:是指参数的参数数量是可变的。
示例1:
系统的打印函数,示例如下:
fmt.Println()
fmt.Println("你好")
fmt.Println("你好", "世界")
示例2:
修改求和函数改为可变参数,示例如下:
func main() {
fmt.Println(sum1(1, 2))
fmt.Println(sum1(1, 2, 3))
fmt.Println(sum1(1, 2, 3, 4))
}
func sum1(params...int) int {
sum :=0
for _,i := range params{
sum +=i
}
return sum
}
可变参数的实质是切片。
包级函数
不管是自定义的函数 sum、sum1
还是我们使用到的函数 Println,
都会从属于一个包也就是 package
不同包的函数要被调用,那么函数的作用域必须是公有的
也就是函数名称的首字母要大写,大写字母开头的函数相当于public,
小写字母开头的函数相当于private,只有相同包名的文件才能使用。
函数名称首字母小写代表私有函数,只有在同一个包中才可以被调用
函数名称首字母大写代表公有函数,不同的包也可以调用。
任何一个函数都会从属于一个包。
匿名函数和闭包
匿名函数就是没有名字的函数。
示例如下:
func main() {
sum2 := func(a, b int) int {
return a+b
}
fmt.Println(sum2)
}
在函数中再定义函数(函数嵌套),定义的这个匿名函数,也可以称为内部函数。
更重要的是,在函数内定义的内部函数,可以使用外部函数的变量等,这种方式也称为闭包。
总结
本文主要为Go语言函数内容作用、声明、参数、返回值及其示例的学习整理笔记。
原文地址:https://blog.csdn.net/json_ligege/article/details/140488793
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!