GO_函数_1

Go 函数基础语法

一、函数定义标准格式

Go 语言函数固定定义格式:

go

Go 复制代码
func 函数名(参数列表) (返回值列表) {
    函数体
}

核心规则

  1. 函数定义位置 :放在main前后都可以,Go 编译器会自动识别
  2. 访问权限
    • 函数名首字母小写 = 私有(只能在当前包使用)
    • 函数名首字母大写 = 公共(可被其他包调用)

二、无参无返回值函数

最简单的函数形式,不需要参数,也没有返回值。

go

Go 复制代码
package main

import "fmt"

// 定义无参无返回值函数
func MyFunc() {
    a := 666
    fmt.Println("a = ", a)
}

func main() {
    // 函数调用
    MyFunc()
}

三、普通参数列表(有参无返回值)

1. 基础带参函数

go

Go 复制代码
// 有参无返回值
func MyFunc01(a int) {
    a = 111
    fmt.Println("a = ", a)
}

2. 重要概念

  • 形参:定义函数时写在括号里的参数(形式参数)
  • 实参:调用函数时传入的具体值
  • 参数传递方向:只能实参 → 形参
  • 同类型参数简写

go

Go 复制代码
// 多个相同类型参数可以只写一次类型
func test(a, b, c int) {
}

四、不定参数列表(重点)

Go 支持可变参数 ,类似其他语言的...语法。

1. 不定参数定义格式

go

Go 复制代码
func 函数名(参数名 ...类型) {
}

2. 示例代码

go

Go 复制代码
package main

import "fmt"

// 不定参数 int 类型
func MyFunc01(a ...int) {
    // 方式1:for 循环遍历
    for i := 0; i < len(a); i++ {
        fmt.Printf("a[%d] = %d \n", i, a[i])
    }

    // 方式2:range 迭代(推荐)
    for i, data := range a {
        fmt.Printf("a[%d] = %d\n", i, data)
    }
}

func main() {
    MyFunc01()           // 不传参
    MyFunc01(1, 2, 3, 4) // 传多个参
}

3. 不定参数规则

  • 不定参数必须放在形参列表的最后一个
  • 函数内部可以把不定参数当作切片使用

五、不定参数的传递

可以把一个函数的不定参数,完整 / 切片式传递给另一个函数。

go

Go 复制代码
package main

import "fmt"

func myfunc(tmp ...int) {
    for _, data := range tmp {
        fmt.Println("data = ", data)
    }
}

func test(args ...int) {
    myfunc(args...)      // 全部传递
    myfunc(args[:2]...)  // 只传递前两个元素
}

func main() {
    test(1, 2, 3, 4)
}

六、函数返回值

1. 无参有一个返回值

go

Go 复制代码
// 方式1:只写返回值类型
func myfunc01() int {
    return 666
}

// 方式2:给返回值起名(推荐)
func myfunc02() (result int) {
    result = 666
    return // 直接return即可,不用写return result
}

2. 多个返回值(Go 特色)

Go 函数支持多个返回值,是最常用的写法之一。

go

Go 复制代码
// 方式1:只写类型
func myfunc01() (int, int, int) {
    return 1, 2, 3
}

// 方式2:官方推荐写法(给返回值起名)
func myfunc02() (a int, b int, c int) {
    a, b, c = 111, 222, 333
    return
}

3. 返回值规则

  • 有返回值的函数必须使用 return
  • return 会中断函数执行并返回结果
  • 多个返回值可以只写类型,也可以同时写变量名 + 类型
  • 若已定义返回值变量,可直接return

本章节核心总结

  1. 函数格式:func 函数名(参数) (返回值) { 函数体 }
  2. 不定参数格式:...类型,必须放最后
  3. 不定参数遍历推荐用for _, data := range 变量
  4. 支持多返回值,官方推荐给返回值起名
  5. 有返回值必须写return
  6. 函数名大写 = 公开,小写 = 私有

总结

函数定义、无参无返回值、普通参数、不定参数、参数传递、单返回值、多返回值,是 Go 函数最核心的第一部分知识。

相关推荐
专注仿真2 小时前
问答大模型技术方案算法实现-熵权法融合算法 + 交叉编码器重排算法
人工智能·python·算法·语言模型·问答大模型关键算法·熵权融合算法·交叉编码器重排算法
地平线开发者3 小时前
量化为什么会有损失:从量化误差到精度下降
算法
手写码匠3 小时前
华为云Flexus+DeepSeek征文|Dify 多 Agent 会话管理与上下文工程实战:让智能体“记住该记住的,忘掉该忘掉的“
人工智能·深度学习·算法·aigc
2401_862880823 小时前
数据结构 --- 栈
c语言·数据结构·算法
致Great4 小时前
Qwen3.8-27B 接入 DSH 全流程实测:写代码、跑长任务,都没问题
算法
Tisfy4 小时前
LeetCode 3471.找出最大的几近缺失整数:三种情况判断
算法·leetcode·题解·分类讨论
linux-hzh5 小时前
百日算法修炼 · Day 12
算法·深度优先
额额额对了5 小时前
数据结构:二叉树
c语言·数据结构·算法
iNeuOS工业互联网5 小时前
iNeuOS_Vision_视觉分析,增加SAM3模型对实例分割和目标检测AI自动标注图片样本功能
人工智能·算法·目标检测
qeen875 小时前
【数据结构】红黑树的算法原理解析与实现
开发语言·数据结构·c++·算法·红黑树