Go语言之函数
2021-10-01 10:24
956 查看
函数就是一块执行特定任务的代码,在输入源的基础上通过一些算法生成预期的输出。
一、函数的声明
Go 语言中的函数声明语法如下:
func 函数名(参数名 类型,参数名 类型)(返回值1类型,返回值2类型){ 函数体内容 return 返回值1,返回值2 }
注意:函数中的参数列表和返回值不是必须的
二、函数的定义方式
1、有参数无返回值
func add(a int, b int) { fmt.Println(a + b) }
2、有参数无返回值,有多个相同类型参数
func add(a, b int) { fmt.Println(a + b) }
3、有参数无返回值,有多个相同类型参数,也有不同类型
func add(a, b int, msg string) { fmt.Println(a + b) fmt.Println(msg) }
4、多个参数,一个返回值
func add(a, b int) int { return a + b }
5、多个参数,多个返回值
func add(a, b int) (int, int) { return a + b, a * b }
6、命名返回值
func add(a, b int) (c int, d int) { c = a + b d = a * b return // 这个时候不需要在写c,d了 }
7、函数返回值为函数(函数是一等公民,函数可以赋值给变量)
func test() func() { return func() { fmt.Println("我是返回函数") } }
8、函数返回值为函数,返回的函数带参数
func test() func(msg string) { // 类型只要有不一样的地方,就不是一个类型 return func(msg string) { fmt.Println(msg) } }
9、函数返回值为函数,返回的函数带参数,带返回值
func test() func(a,b int) int{ return func(a,b int) int { return a+b } }
10、函数参数为函数类型,返回值为带参数,带返回值的函数类型
package main import "fmt" func main() { var c = f a,b := test(c)(3,4) fmt.Println(a, b) } func test(f func()) func(a, b int) (int, int) { return func(a, b int) (int, int) { f() return a + b, a * b } } func f() { fmt.Println("我是函数参数") }
11、闭包函数:定义在函数内部,对外部作用域有引用
闭包函数就是多了一种函数传参的方法
func test(age int) func() { a := func() { fmt.Println(age) } return a // a就是闭包函数 }
12、匿名函数(定义在函数内部的函数,不能是有名函数,头等函数)
var a func() a = func (){ fmt.Println("我是匿名函数") } a()
13、空白符( _ 在Go中被用作空白符,可以用来表示任何类型的任何值)
package main import "fmt" func main() { _, b := test(3, 5) fmt.Println(b) // 返回 15 } func test(a, b int) (int, int) { return a + b, a * b }
相关文章推荐
- Go语言的匿名函数与闭包
- 【Go学习】理解Go语言中的函数闭包
- GO语言基础map与函数
- Go语言小知识之append()函数
- Go语言的变量、函数、Socks5代理服务器
- Go语言中普通函数与方法的区别分析
- GO语言函数与类型
- Go语言-函数
- go语言:函数参数传递详解
- Go语言学习之函数(The way to go)
- go语言将函数作为参数传递
- go语言简单的处理http请求的函数实例
- Go语言_函数学习篇
- Go语言入门6-函数function
- GO语言学习-内建函数
- Go语言_函数学习篇
- go语言中将函数作为变量传递
- go语言[7] 函数,方法和接口
- go语言函数
- Go语言学习六:指针与传递到函数的指针