Go 函数

函数是为完成某一功能的程序指令(语句)的集合称为函数。在 Go 中,函数分为:自定义函数和系统函数。

函数的定义

以下是函数的基本语法 描述:

func 函数名(形参列表) (返回值类型列表) {
  ...语句块
  return 返回值1, 返回值2
}
  1. 形参列表表示函数的输入

  2. 函数中的语句表示为了实现某一功能的代码块

  3. 函数可以有返回值,也可以没有,在 Go 语言中,一个函数可以有多个返回值

  4. 返回多个值时,如果不使用那么会出现错误,可以使用 _ 符号占位忽略

    var val, _ = getVal()
    
  5. 如果返回值只有一个,那么在声明函数的时候可以省略返回值类型的 ()

    func getVal() int {
      return 1
    }
    
  6. 基本数据类型和数组默认都是值传递的,也就是值拷贝,在函数内修改,是不会影响到原来的值

  7. 在 Go 中,函数也是一种数据类型,可以赋值给一个变量,通过该变量可以对函数进行调用

    func main() {
    	increment(cal)
      // 也可以使用下面这种方式来传递
      increment(func (num int) int {
        return 1
      })
    }
    
    func cal(num int) int {
    	return 1
    }
    
    // 创建一个函数类型
    type GetVal = func(num int) int
    
    func increment(getVal GetVal) int {
    	return getVal(123)
    }
    
    

可以通过函数名加上小括号去调用指定的函数

func main() {
  var result = increment(1, 2)
  fmt.Println("result =", result) // 3
}

func increment(max int, min int) int {
  return max + min
}

init 函数

每一个源文件都可以包含一个 init() 函数,该函数会在 main() 函数执行前被 Go 运行框架调用,也就是说 init() 会在 main() 函数前被调用。

import "fmt"

func main() {
	fmt.Println("main 函数被执行了")
}

func init() {
	fmt.Println("inti 函数被执行了")
}

以上代码 init() 函数会先于 main() 函数执行:

➜  go-learn go run go-func.go
inti 函数被执行了
main 函数被执行了

在 Go 语言中,变量和函数的定义顺序是:

全局变量 ---> init() ---> main()

init() 函数的作用通常是用来完成一些初始化工作,例如初始化一些程序运行时必要的全局数据。

匿名函数

Go 支持匿名函数,如果我们某个函数只是希望被只用一次,可以使用匿名函数,匿名函数也可以实现多次调用。

var MyFun = func() {
	fmt.Println("MyFunc")
}

func main() {
	MyFun() // 调用全局匿名函数
	var localFun = func ()  { // 定义一个局部匿名函数
		fmt.Println("local func") // 使用局部定义的匿名函数
	}
	localFun()
}
posted @ 2023-06-13 10:03  CloverYou  阅读(30)  评论(0)    收藏  举报