【golang函数笔记】

目录

  • 01定义和调用函数
    • 1. 函数的参数
    • 2. 函数的返回值
    • 3. 函数的变参
    • 4. 匿名函数

Golang是一种支持函数式编程的语言,它的函数具有以下特点:

  1. 函数是一等公民:函数可以作为参数传递给其他函数,也可以作为返回值返回给调用者。

  2. 支持多返回值:函数可以返回多个值,这些值可以是不同类型的。

  3. 支持匿名函数:Golang支持定义匿名函数,这些函数可以像普通函数一样被调用。

01定义和调用函数

下面是一个简单的示例代码,展示了如何在Golang中定义和调用函数:

package main

import "fmt"

// 定义一个名为add的函数,接收两个整数类型的参数,返回它们的和
func add(a, b int) int {
    return a + b
}

func main() {
    // 调用add函数,并将返回值赋值给变量sum
    sum := add(1, 2)
    // 输出sum的值
    fmt.Println(sum)
}

代码解释:

  1. 第1行定义了一个名为main的包,这是Golang程序的入口点。

  2. 第3行导入了fmt包,该包提供了格式化输入输出的功能。

  3. 第5行定义了一个名为add的函数,它接收两个整数类型的参数a和b,返回它们的和。

  4. 第9行开始执行main函数,调用add函数并将返回值赋值给变量sum。

  5. 第11行输出sum的值。

接下来,我们将进一步探讨Golang中函数的相关知识点。

1. 函数的参数

函数的参数可以是任意类型,包括基本类型、结构体、数组、切片、映射、函数等。在Golang中,函数的参数可以有多个,它们之间用逗号分隔。

示例代码:

package main

import "fmt"

// 定义一个名为add的函数,接收两个整数类型的参数,返回它们的和
func add(a, b int) int {
    return a + b
}

// 定义一个名为printPerson的函数,接收一个结构体类型的参数,输出该结构体的信息
func printPerson(person struct {
    name string
    age  int
}) {
    fmt.Printf("Name: %s, Age: %d\n", person.name, person.age)
}

func main() {
    // 调用add函数,并将返回值赋值给变量sum
    sum := add(1, 2)
    // 输出sum的值
    fmt.Println(sum)

    // 定义一个名为p的结构体变量
    p := struct {
        name string
        age  int
    }{
        name: "Tom",
        age:  20,
    }

    // 调用printPerson函数,输出p的信息
    printPerson(p)
}

代码解释:

  1. 第5行定义了一个名为add的函数,它接收两个整数类型的参数a和b,返回它们的和。

  2. 第8行定义了一个名为printPerson的函数,它接收一个结构体类型的参数person,输出该结构体的信息。

  3. 第22行定义了一个名为p的结构体变量。

  4. 第25行调用printPerson函数,将p作为参数传入。

2. 函数的返回值

函数可以返回一个或多个值,这些值可以是不同类型的。在Golang中,函数的返回值可以在函数定义时指定,也可以在函数体中使用return语句返回。

示例代码:

package main

import "fmt"

// 定义一个名为swap的函数,接收两个整数类型的参数,返回它们的值交换后的结果
func swap(a, b int) (int, int) {
    return b, a
}

func main() {
    // 调用swap函数,并将返回值赋值给变量x和y
    x, y := swap(1, 2)
    // 输出x和y的值
    fmt.Println(x, y)
}

代码解释:

  1. 第5行定义了一个名为swap的函数,它接收两个整数类型的参数a和b,返回它们的值交换后的结果。

  2. 第9行开始执行main函数,调用swap函数并将返回值分别赋值给变量x和y。

  3. 第11行输出x和y的值。

3. 函数的变参

Golang中的函数可以接收变长参数,这些参数的数量可以是任意的。在函数定义时,可以使用…语法来表示变长参数。

示例代码:

package main

import "fmt"

// 定义一个名为sum的函数,接收任意数量的整数类型参数,返回它们的和
func sum(nums ...int) int {
    total := 0
    for _, num := range nums {
        total += num
    }
    return total
}

func main() {
    // 调用sum函数,传入任意数量的参数
    fmt.Println(sum(1, 2, 3, 4, 5))
    fmt.Println(sum(1, 2, 3))
    fmt.Println(sum(1, 2))
    fmt.Println(sum(1))
    fmt.Println(sum())
}

代码解释:

  1. 第5行定义了一个名为sum的函数,它接收任意数量的整数类型参数nums,返回它们的和。

  2. 第9-12行使用for循环遍历nums中的每个元素,并将它们累加到变量total中。

  3. 第14行开始执行main函数,分别调用sum函数,传入不同数量的参数,并输出它们的和。

  4. 第15-19行分别输出不同数量参数的和。

4. 匿名函数

Golang支持定义匿名函数,这些函数可以像普通函数一样被调用。匿名函数可以作为参数传递给其他函数,也可以作为返回值返回给调用者。

示例代码:

package main

import "fmt"

func main() {
    // 定义一个匿名函数,并将它赋值给变量f
    f := func(a, b int) int {
        return a + b
    }

    // 调用匿名函数,并将返回值赋值给变量sum
    sum := f(1, 2)
    // 输出sum的值
    fmt.Println(sum)
}

代码解释:

  1. 第6行定义了一个匿名函数,并将它赋值给变量f。

  2. 第9行调用匿名函数,并将返回值赋值给变量sum。

  3. 第11行输出sum的值。

以上就是Golang中函数相关知识的简单介绍和示例代码,希望对您有所帮助。

你可能感兴趣的:(golang,golang,笔记,python)