• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Go语言之函数

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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

一、函数的声明

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
}

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Go语言之接口发布时间:2022-07-10
下一篇:
GO-Map映射习题疑问发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap