函数的声明

函数代表了代码执行的逻辑,Go语言中函数的关键字是func加上函数名,参数列表,返回值和函数体,构成一个函数。我们在开发一个程序中一定会包含很多个函数。

func myfunc(p int) int {
    return p
}

func Money() {
    println("Money")
}

注意点

  • 函数名可以由字母和数字组成,但不能是数字开头。
  • 函数的首字母区分大小写,如果是大写的标识公共函数,其他包内可以调用到(前提是引入了当前包)。
  • 函数的首字母小写,则表示为私有的函数,只能在本包中调用。

函数的使用

// 函数的定义并不会执行函数的过程,只有调用的时候才会执行
func main() {
    // 这是一个特殊的函数,由系统自动调用
}

func funcname(parametername1 type1, parametername2 type2) (output1 type1, output2 type2) {
    // 处理逻辑
    // 返回  go语言支持多返回值,一个函数可以返回多个结果
    return value1, value2
}

函数的调用

package main

import "fmt"

func main() {
    // 这是一个特殊的函数,由系统自动调用
    sum := getSum()
    fmt.Printf("%d\n", sum) // 5050
}

// 定义函数 求 1-100 的和
func getSum() int {
    sum := 0
    for i := 1; i <= 100; i++ {
        sum += i
    }
    return sum
}

注意点

  • 函数可以没有参数。
  • 函数也可以没有返回值。
  • 函数必须先定义才能使用,如果定义后不使用,虽然不会报错但也没有意义。
  • 函数名不能重复。

函数的参数

package main

import "fmt"

func main() {
    // 调用函数
    sum := getSum2(100)     // 这里50,作为实参传递给方法
    fmt.Printf("%d\n", sum) // 5050
}

// 定义函数,num为形参,用于接收调用方传递过来的参数
func getSum2(num int) int {
    sum := 0
    for i := 1; i <= num; i++ {
        sum += i
    }
    return sum
}

函数返回值/多返回值

函数可以定义多个返回值,并且返回值类型,返回值数量都必须是一一对应的,return是将结果返回到函数的调用处,结束函数的执行。_空白标识符,舍弃返回的数据。

package main

import "fmt"

func main() {
    // 调用函数
    sum1 := getSum3(100)     // 这里50,作为实参传递给方法
    fmt.Printf("%d\n", sum1) // 输出 5050

    sum2, sum3 := getSum4(100)
    fmt.Printf("%d\n", sum2) // 输出 5050
    fmt.Printf("%d\n", sum3) // 输出 5051
}

func getSum3(num int) int {
    sum := 0
    for i := 1; i <= num; i++ {
        sum += i
    }
    return sum
}

func getSum4(num int) (out1 int, out2 int) {
    sum := 0
    for i := 1; i <= num; i++ {
        sum += i
    }
    return sum, sum + 1
}

变量在函数的作用域

package main

import "fmt"

func main() {
    res := closure()
    fmt.Println(res()) // 1
    r1 := res()
    fmt.Println(r1) // 2
    r2 := res()
    fmt.Println(r2) // 3

    res2 := closure()
    fmt.Println(res2()) // 1
    r3 := res2()
    fmt.Println(r3) // 2
}

// 定义一个闭包结构的函数,返回一个匿名函数
func closure() func() int {
    // 定义局部变量
    i := 0 // 闭包结构的函数,可以访问外部函数的局部变量
    // 返回一个匿名函数
    return func() int {
        i++
        return i
    }
}

Last modification:November 16, 2022
If you think my article is useful to you, please feel free to appreciate