AI智能
改变未来

Go语言之函数

函数就是一块执行特定任务的代码,在输入源的基础上通过一些算法生成预期的输出。

一、函数的声明

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 + bd = a * breturn     // 这个时候不需要在写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 mainimport "fmt"func main() {var c = fa,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 mainimport "fmt"func main() {_, b := test(3, 5)fmt.Println(b)	// 返回 15}func test(a, b int) (int, int) {return a + b, a * b}
赞(0) 打赏
未经允许不得转载:爱站程序员基地 » Go语言之函数